Методы коллекционной фабрики для Vavr

Коллекционные фабричные методы для Vavr

1. обзор

Vavr - мощная библиотека для Java 8+, построенная на основе лямбда-выражений Java. Вдохновленный языком Scala,Vavr adds functional programming constructs to the Java language, например сопоставление с образцом, управляющие структуры, типы данных, постоянные и неизменяемые коллекции и многое другое.

В этой короткой статье мы покажемhow to use some of the factory methods to create Vavr collections. Если вы новичок в Vavr, вы можете начать сthis introductory tutorial, который, в свою очередь, содержит ссылки на другие полезные статьи.

2. Maven Dependency

Чтобы добавить библиотекуVavr в проект Maven, отредактируйте файлpom.xml, включив в него следующую зависимость:


    io.vavr
    vavr
    0.9.1

Вы можете найти последнюю версию библиотеки наhttps://search.maven.org/classic/search%7Cga%7C1%7Cg%3A%22io.vavr%22%20AND%20a%3A%22vavr%22[Maven Central repository].[#sec3] #

3. Статические фабричные методы

Используя статический импорт:

static import io.vavr.API.*;

мы можем создать список с помощью конструктораList(…):

List numbers = List(1,2,3);

вместо использования статического фабричного методаof(…):

List numbers = List.of(1,2,3);

или также:

Tuple t = Tuple('a', 3);

вместо:

Tuple t = Tuple.of('a', 3);

Этот синтаксический сахар похож на конструкции в Scala / Kotlin. В дальнейшем мы будем использовать эти сокращения в статье.

4. Создание элементовOption

ЭлементыOption не являются коллекциями, но они могут быть очень полезными конструкциями библиотеки Vavr. Это типallows us to hold either an object or a None element (эквивалент объектаnull):

Option none = None();
Option some = Some(1);

5. VavrTuples

Точно так же в Java нет кортежей, таких как упорядоченные пары, тройки и т. Д. ВVavr мы можемdefine a Tuple that holds up to eight objects of different types. Вот пример, содержащий объектыCharacter,String иInteger:

Tuple3 tuple
  = Tuple('a', "chain", 2);

6. ТипTry

ТипTry можно использовать дляmodel computations that may or may not raise an exception:

Try integer
  = Success(55);
Try failure
  = Failure(new Exception("Exception X encapsulated here"));

В этом случае, если мы оценимinteger.get(), мы получим целочисленный объект 55. Если мы оценимfailure.get(), будет выдано исключение.

7. Vavr Коллекции

Мы можем создавать коллекции разными способами. ДляLists мы можем использоватьList.of(), List.fill(), List.tabulate() и т. Д. Как упоминалось ранее, заводским методом по умолчанию являетсяList.of(), который можно сократить с помощью конструктора стиля Scala:

List list = List(1, 2, 3, 4, 5);

Мы также можем создать пустой список (называемый объектомNil вVavr):

List()

Аналогичным образом мы можем создать другие видыCollections:

Array arr = Array(1, 2, 3, 4, 5);
Stream stm = Stream(1, 2, 3, 4, 5);
Vector vec = Vector(1, 2, 3, 4, 5);

8. Заключение

Мы видели наиболее распространенные конструкторы для типов и коллекцийVavr. Синтаксический сахар, предоставляемый статическим импортом, упомянутым вsection 3, упрощает создание всех типов в библиотеке.

Вы можете найти все примеры кода, использованные в этой статье, вGitHub project.