Guavaのcom.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); } }