Google Collection Library

Google Collection Libraryを軽くいじってみました。
かなり良さげです。


Google Collection Library
http://code.google.com/p/google-collections/


Java 7に向けて提案されている型推論と同様のことが
できてしまうのが特に嬉しいです。


たとえば、

List<String> listOfStrings = new ArrayList<String>();
List<Map<String, Object>> mapItems = new ArrayList<Map<String, Object>>();
List<List<Map<String, Object>>> mapItemsItems = new ArrayList<List<Map<String, Object>>>();


は、次のように書き換えることができます。

List<String> listOfStrings = Lists.newArrayList();
List<Map<String, Object>> mapItems = Lists.newArrayList();
List<List<Map<String, Object>>> mapItemsItems = Lists.newArrayList();


実務では、長いクラス名のエンティティのListなどを扱う機会が多いので、
簡潔に記述できるのは良い感じです。


ちなみに、上記のnewArrayListメソッドを覗いてみると、
次のようになっていました。

public static <E> ArrayList<E> newArrayList() {
    return new ArrayList<E>();
}


戻り値を型のパラメータとして扱うことができるんですね。
これで型推論ができてしまうのかぁ。盲点だなぁ。


様々な既存ライブラリをラップして型推論ベースのライブラリとかを
意外と簡単に作れるかも知れません。


他にも、プレディケート(Predicate)や関数(Function)のような
興味深い機能があります。


プレディケート(Predicate)は、コレクションの要素を
選択基準に基づいて抽出できるフィルタのような機能です。


関数は(Function)、コレクション内の要素を変換して
別の新しいコレクション(型が同じとは限らない)を作ることができます。


参考

Google Collections Library」でJavaのコレクションを補完する
http://codezine.jp/a/article/aid/2397.aspx?p=2


Google Collection Libraryのサンプルコード一覧
http://publicobject.com/2007/09/series-recap-coding-in-small-with.html