Vavrのコレクションファクトリメソッド

1概要

Vavr は、Java 8用の強力なライブラリで、Javaのラムダ式の上に構築されています。 Scala言語に触発された Vavr は、パターンマッチング、制御構造、データ型、永続的で不変のコレクションなどのような関数型プログラミング構造をJava言語 に追加します。

この短い記事では、いくつかのファクトリメソッドを使用して Vavr コレクションを作成する方法** を説明します。もしあなたがVavrに慣れていないのであれば、link:/vavr-tutorial[はじめに

2 Mavenの依存関係

Vavr ライブラリをMavenプロジェクトに追加するには、 pom.xml ファイルを編集して以下の依存関係を含めます。

<dependency>
    <groupId>io.vavr</groupId>
    <artifactId>vavr</artifactId>
    <version>0.9.1</version>
</dependency>

このライブラリの最新版はhttps://search.maven.org/classic/ search%7Cga%7C1%7Cg%3A%22io.vavr%22%20AND%20a%3A%22vavr%22[]にありますMaven Centralリポジトリ]。[#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ライブラリの非常に便利な構成要素になり得ます。これは、オブジェクトか None 要素( null オブジェクトと同等)のどちらかを保持することを可能にする型です。

Option<Integer> none = None();
Option<Integer> some = Some(1);

5 Vavr Tuples

同様に、Javaには、順序付きペア、トリプルなどのようなタプルは付属していません。これは、 Character String 、および Integer オブジェクトを保持する例です。

Tuple3<Character, String, Integer> tuple
  = Tuple('a', "chain", 2);

6. Try タイプ

Try 型は、例外を発生させるかもしれないし、発生させないかもしれない計算をモデル化するために使用することができます

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

この場合、 integer.get() を評価すると整数オブジェクト55が得られます。

** 7. Vavr コレクション

**

コレクションをさまざまな方法で作成できます。 __List sには、 List.of()、List.fill()、List.tabulate() などを使用できます。前述のように、デフォルトのファクトリメソッドは List.of()__で、Scalaスタイルを使用して省略できます。コンストラクタ:

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

空のリスト( Vavr では Nil オブジェクトと呼ばれる)を作成することもできます。

List()

同様に、他の種類の __Collection __を作成することができます。

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 で言及されている静的インポートによって提供されるシンタックスシュガーは、ライブラリ内のすべての型を簡単に作成することを可能にします。

この記事で使用されているすべてのコード・サンプルはhttps://github.com/eugenp/tutorials/tree/master/vavr[GitHubプロジェクト]にあります。