読者です 読者をやめる 読者になる 読者になる

覚えたら書く

IT関係のデベロッパとして日々覚えたことを書き残したいです。 twitter: @yyoshikaw

com.google.common.collect.Lists

Guavacom.google.common.collect.Listsの利用サンプルです。
ListsクラスはListの生成含めたユーティリティメソッドを提供してくれます。

サンプルコードで試したのは以下の通りです。


ArrayListを生成(ファクトリメソッド)

■API

  • Lists#newArrayList

■サンプル

// Lists#newArrayListでArrayListを生成(右辺がすっきり)
List<String> list1 = Lists.newArrayList();
list1.add("abc");
list1.add("ghi");
list1.add("def");
System.out.println("list1: " + list1);

// Lists#newArrayListでCollectionを指定してArrayList生成
Set<String> strSet = new HashSet<>();
strSet.add("mario");
strSet.add("luigi");
strSet.add("nokonoko");
List<String> list2 = Lists.newArrayList(strSet);
System.out.println("list2: " + list2);

■実行結果

list1: [abc, ghi, def]
list2: [luigi, nokonoko, mario]


対象Listを指定した要素数のListに分割

■API

  • Lists#partition

■サンプル

// Lists#partitionで対象のListを指定した要素数のListに分割する
List<String> tempList = Lists.newArrayList("a", "b", "c", "d", "e", "f", "g", "h", "i");
List<List<String>> list3 = Lists.partition(tempList, 2);
System.out.println("list3: " + list3);

■実行結果

list3: [[a, b], [c, d], [e, f], [g, h], [i]]


対象Listの要素の並び順を逆順にする(副作用なし)

■API

  • Lists#reverse

■サンプル

// Lists#reverseで逆順にしてみる(Collections#reverseと違って引数のListの並び順は変化しない)
List<String> list4 = Lists.newArrayList("a", "b", "c", "d");
List<String> list5 = Lists.reverse(list4);
System.out.println("list4: " + list4);
System.out.println("list5: " + list5);

■実行結果

list4: [a, b, c, d]
list5: [d, c, b, a]


第1引数の値を先頭に、第2引数の配列の各要素をそれ以降にセットする

■API

  • Lists#asList

■サンプル

// Lists#asListでList生成(第1引数の値が先頭に、第2引数の配列の各要素がそれ以降にセットされる)
List<String> list6 = Lists.asList("first", new String[] { "1", "2", "3" });
System.out.println("list6: " + list6);

■実行結果

list6: [first, 1, 2, 3]




試したソースコードの全体は以下です。

import com.google.common.collect.Lists;

import java.util.HashSet;
import java.util.List;
import java.util.Set;


public class ListsClient {

    public static void main(String[] args) {

        // Lists#newArrayListでArrayListを生成(右辺がすっきり)
        List<String> list1 = Lists.newArrayList();
        list1.add("abc");
        list1.add("ghi");
        list1.add("def");
        System.out.println("list1: " + list1);

        // Lists#newArrayListでCollectionを指定してArrayList生成
        Set<String> strSet = new HashSet<>();
        strSet.add("mario");
        strSet.add("luigi");
        strSet.add("nokonoko");
        List<String> list2 = Lists.newArrayList(strSet);
        System.out.println("list2: " + list2);

        // Lists#partitionで対象のListを指定した要素数のListに分割する
        List<String> tempList = Lists.newArrayList("a", "b", "c", "d", "e", "f", "g", "h", "i");
        List<List<String>> list3 = Lists.partition(tempList, 2);
        System.out.println("list3: " + list3);

        // Lists#reverseで逆順にしてみる(Collections#reverseと違って引数のListの並び順は変化しない)
        List<String> list4 = Lists.newArrayList("a", "b", "c", "d");
        List<String> list5 = Lists.reverse(list4);
        System.out.println("list4: " + list4);
        System.out.println("list5: " + list5);

        // Lists#asListでList生成(第1引数の値が先頭に、第2引数の配列の各要素がそれ以降にセットされる)
        List<String> list6 = Lists.asList("first", new String[] { "1", "2", "3" });
        System.out.println("list6: " + list6);
    }
}