1. 序章

Cactoos は、オブジェクト指向のJavaプリミティブ型のライブラリです。

このチュートリアルでは、このライブラリの一部として利用できるクラスのいくつかを見ていきます。

2. サボテン

Cactoosライブラリのレパートリーは、文字列操作からデータ構造に至るまで、かなり豊富です。 このライブラリが提供するプリミティブタイプとそれに対応するメソッドは、GuavaApacheCommons などの他のライブラリが提供するものと似ていますが、オブジェクト指向の設計原則に重点を置いています。

2.1. ApacheCommonsとの比較

Cactoosライブラリには、ApacheCommonsライブラリの一部である静的メソッドと同じ機能を提供するクラスが装備されています。

StringUtilsパッケージの一部であるこれらの静的メソッドのいくつかとCactoosの同等のクラスを見てみましょう。

StringUtilsの静的メソッド  同等のCactoosクラス
isBlank() IsBlank
小文字() 下げた
upperCase() アッパー
rotate() 回転
swapCase() SwappedCase
stripStart() TrimmedLeft
stripEnd() TrimmedRight

これに関する詳細は、公式ドキュメントにあります。 これらのいくつかの実装については、次のセクションで説明します。

3. Mavenの依存関係

必要なMaven依存関係を追加することから始めましょう。 このライブラリの最新バージョンは、 MavenCentralにあります。

<dependency>
    <groupId>org.cactoos</groupId>
    <artifactId>cactoos</artifactId>
    <version>0.43</version>
</dependency>

4. 文字列

Cactoosには、Stringオブジェクトを操作するためのさまざまなクラスがあります。

4.1. 文字列オブジェクトの作成

TextOfクラスを使用してStringオブジェクトを作成する方法を見てみましょう。

String testString = new TextOf("Test String").asString();

4.2. フォーマットされた文字列

フォーマットされたStringを作成する必要がある場合は、FormattedTextクラスを使用できます。

String formattedString = new FormattedText("Hello %s", stringToFormat).asString();

このメソッドが実際にフォーマットされたStringを返すことを確認しましょう。

StringMethods obj = new StringMethods();

String formattedString = obj.createdFormattedString("John");
assertEquals("Hello John", formattedString);

4.3. 小文字/大文字の文字列

Lowered クラスは、 TextOf オブジェクトを使用して、Stringを小文字に変換します。

String lowerCaseString = new Lowered(new TextOf(testString)).asString();

同様に、特定の String は、Upperクラスを使用して大文字に変換できます。

String upperCaseString = new Upper(new TextOf(testString)).asString();

テスト文字列を使用して、これらのメソッドの出力を確認しましょう。

StringMethods obj = new StringMethods();

String lowerCaseString = obj.toLowerCase("TeSt StrIng");
String upperCaseString = obj.toUpperCase("TeSt StrIng"); 

assertEquals("test string", lowerCaseString);
assertEquals("TEST STRING", upperCaseString);

4.4. 空の文字列を確認します

前に説明したように、Cactoosライブラリは IsBlank クラスを提供して、nullまたは空のStringをチェックします。

new IsBlank(new TextOf(testString)) != null;

5. コレクション

このライブラリは、コレクションで作業するためのいくつかのクラスも提供します。 これらのいくつかを見てみましょう。

5.1. コレクションの反復

ユーティリティクラスAndを使用して、文字列のリストを繰り返すことができます。

new And((String input) -> LOGGER.info(new FormattedText("%s\n", input).asString()), strings).value();

上記の方法は、出力をロガーに書き込むStringsリストを反復処理する機能的な方法です。

5.2. コレクションのフィルタリング

Filtered クラスを使用して、特定の基準に基づいてコレクションをフィルタリングできます。

Collection<String> filteredStrings 
  = new ListOf<>(new Filtered<>(string -> string.length() == 5, new IterableOf<>(strings)));

いくつかの引数を渡してこのメソッドをテストしてみましょう。そのうちの3つだけが基準を満たしています。

CollectionUtils obj = new CollectionUtils(); 

List<String> strings = new ArrayList<String>() {
    add("Hello"); 
    add("John");
    add("Smith"); 
    add("Eric"); 
    add("Dizzy"); 
};

int size = obj.getFilteredList(strings).size(); 

assertEquals(3, size);

このライブラリによって提供されるコレクションの他のいくつかのクラスは、公式ドキュメントにあります。

6. 結論

このチュートリアルでは、Cactoosライブラリと、それが文字列およびデータ構造の操作のために提供するいくつかのクラスについて説明しました。

これらに加えて、ライブラリはIO操作および日付と時刻用の他のユーティリティクラスも提供します。

いつものように、このチュートリアルで使用されるコードサンプルは、GitHubからで入手できます。