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
要求水準の高さに人は動機づけられ多くを成し遂げる
要求されるものが大きいほど、人は多くを成し遂げる。要求が大きいほど、人は多くを生み出す。それが、人間という存在の特性である。
しかも人は、誇れるものがあってのみ、誇りを持つ。なにかを達成したときにのみ、達成感を持つ。仕事が重要なときにのみ、自らを重要と感じる。
今は亡きドラッカーの心に残る至言。
たった一度の人生なんだから、この至言を体現するような人生を送りたい。