1. 概要

このチュートリアルでは、Guavaライブラリを使用してリストを操作するための最も一般的で便利な方法を説明します。

簡単に始めましょう–そして new なしで、Guava構文を使用して新しいArrayListを作成するだけを見てみましょう。

List<String> names = Lists.newArrayList("John", "Adam", "Jane");

2. リストを反転します

まず、次の例のように、 Lists.reverse()を使用してリストを反転させましょう。

@Test
public void whenReverseList_thenReversed() {
    List<String> names = Lists.newArrayList("John", "Adam", "Jane");

    List<String> reversed = Lists.reverse(names);
    assertThat(reversed, contains("Jane", "Adam", "John"));
}

3. 文字列から文字リストを生成します

次に、文字列を文字のリストに分割する方法を見てみましょう。

次の例では、 Lists.CharactersOf() APIを使用して、 StringからCharacter Listを作成します。ジョン」

@Test
public void whenCreateCharacterListFromString_thenCreated() {
    List<Character> chars = Lists.charactersOf("John");

    assertEquals(4, chars.size());
    assertThat(chars, contains('J', 'o', 'h', 'n'));
}

4. リストを分割します

次へ–パーティションaリストの方法を見てみましょう。

次の例では、 Lists.partition()を使用して、それぞれサイズ2の連続したサブリストを取得します。

@Test
public void whenPartitionList_thenPartitioned(){
    List<String> names = Lists.newArrayList("John","Jane","Adam","Tom","Viki","Tyler");

    List<List<String>> result = Lists.partition(names, 2);

    assertEquals(3, result.size());
    assertThat(result.get(0), contains("John", "Jane"));
    assertThat(result.get(1), contains("Adam", "Tom"));
    assertThat(result.get(2), contains("Viki", "Tyler"));
}

5. リストから重複を削除

それでは、簡単なトリックを使用して、リストから重複を削除しましょう。

次の例では、要素を Set にコピーしてから、残りの要素からListを作成します。

@Test
public void whenRemoveDuplicatesFromList_thenRemoved() {
    List<Character> chars = Lists.newArrayList('h','e','l','l','o');
    assertEquals(5, chars.size());

    List<Character> result = ImmutableSet.copyOf(chars).asList();
    assertThat(result, contains('h', 'e', 'l', 'o'));
}

6. リストからヌル値を削除します

次へ–リストからnull値を削除する方法を見てみましょう。

次の例では、非常に便利な Iterables.removeIf() APIと、ライブラリ自体によって提供される述語を使用して、すべてのnull値を削除します。

@Test
public void whenRemoveNullFromList_thenRemoved() {
    List<String> names = Lists.newArrayList("John", null, "Adam", null, "Jane");
    Iterables.removeIf(names, Predicates.isNull());

    assertEquals(3, names.size());
    assertThat(names, contains("John", "Adam", "Jane"));
}

7. ListImmutableListに変換します

最後に、 ImmutableList.copyOf() APIを使用して、 List ImmutableList –の不変コピーを作成する方法を見てみましょう。

@Test
public void whenCreateImmutableList_thenCreated() {
    List<String> names = Lists.newArrayList("John", "Adam", "Jane");

    names.add("Tom");
    assertEquals(4, names.size());

    ImmutableList<String> immutable = ImmutableList.copyOf(names);
    assertThat(immutable, contains("John", "Adam", "Jane", "Tom"));
}

8. 結論

そして、ここにあります–Guavaを使用してリストで実行できるほとんどの便利なことを説明する簡単なチュートリアルです。

リストをさらに掘り下げるには、述語と関数のガイドと、Guavaのリストの結合と分割に関する詳細なガイドを確認してください。

これらすべての例とコードスニペットの実装は、私のGuava githubプロジェクトにあります。これはEclipseベースのプロジェクトであるため、そのままインポートして実行するのは簡単です。