Googleが公開しているJavaライブラリのひとつにGoogle Collections Libraryがある。2009年12月30日(米国時間)にバージョン1.0になり、以後APIが互換性のない変更を受けることはないという宣言が発表された。0x1fff: 35 Google open-source projects that you probably don't knowでもGoogleプロジェクトのひとつとして紹介されている。
JavaにははじめからCollectionsライブラリが用意されている。Collectionsライブラリはまさまざまなデータを格納する便利な入れ物をまとめたもの。Google Collections LibraryはJavaの標準のCollectionライブラリを拡張し、さまざまな機能を提供することを目指している。Collectionsライブラリはプログラミングの生産性に直接関係してくるだけに、どの程度便利になるのかはプログラマの興味を引くポイントだ。
Google Collections Libraryを調査してみたという内容がReasons to Use Google Collections - Javalobbyにおいて簡潔に紹介されている。実際のサンプルコードも掲載されており、その違いがわかりやすい。Reasons to Use Google Collectionsでは特にMultimapが便利だとし、個人と電話データをCollections APIを使って操作する場合の例をあげて違いを示している。
まず、1個人に対して0以上の複数の電話データを関連付けることができると定義。JavaのデフォルトのCollections APIであれば、Map (HashMap)を電話帳に割り当てて、そこに個人を表現するオブジェクトと、電話データを表現するオブジェクトを格納したList (ArrayList)を格納する。この場合、Listを生成する処理と、リストを取り出して次の電話オブジェクトを追加する処理が必要になる。Java Collections APIを使うケースではよく見かけるソースコードだ (Reasons to Use Google Collectionsより抜粋)。
Map<Person, List<PhoneNumber>> phoneBook =
new HashMap<Person, List<PhoneNumber>>();
Person me = new Person("James");
if (phoneBook.get(me) == null) {
phoneBook.put(me, new ArrayList<PhoneNumber>());
}
phoneBook.get(me).add(new PhoneNumber(111));
Google Collections LibraryのMultimapは、ひとつのキーに対して複数のオブジェクトを関連付けることができるように拡張されたCollections API。先ほどのコードをMultimapを使うようにすると次のようになるという (Reasons to Use Google Collectionsより抜粋)。
Multimap <Person, PhoneNumber> newPhoneBook =
ArrayListMultimap.create();
Person me = new Person("James");
newPhoneBook.put(me, new PhoneNumber(111));
newPhoneBook.put(me, new PhoneNumber(201));
細かい処理はAPIの内部で処理されるため、コード自身がよりすっきりしている。もちろん、ラッパクラスを用意すれば同じことは実現できる。Google Collections Libraryを採用する利点は、こうした便利なCollections APIがすでに開発されてまとまっていること、1.0になってAPIがフィックスし今後互換性を失う変更がおこなわれることがない、といったあたりにある。また、便利なCollections APIのアイディアとしても参考になる。
| ラネクシー、画像処理ソフトウェア開発キットの最新版を64bit版で販売 [10:10 5/28] |
| 東陽テクニカ、1G/10GbE回線対応のポータブルネットワークアナライザ [09:57 5/28] |
| 日本発の取り組み「Mozilla Factory」がスタート [09:30 5/28] |
| 【レポート】クラウド/モバイル/ビッグデータ時代に求められるUIとは - TOBESOFT 金代表 [09:00 5/28] |
| エンタープライズ向けCMS「eZ Publish 4.7」が公開 [07:30 5/28] |
|
パナソニック、タリーズコーヒーやスリーエフにワイヤレス充電パッド導入 [10:41 5/28] 経営 |
|
不正コピー問題で和解した信州大学に、調査漏れの不正利用が発覚 [10:39 5/28] ネット |
|
ACCS、ファイル共有ソフトの利用状況を調査 - 中高生の利用が増加 [10:35 5/28] ネット |
|
JCAA、フィッシング対策の動画「いつもキミをまもりたいから」 [10:25 5/28] ネット |
|
アニパ島の皆に会える!新アトラクション『アニパ!水てっぽうのぼうけん隊』先行レビュー(秋田県) [10:15 5/28] キャリア |
4つの診断で、自分の適性を見つめなおそう!
働くこと・挑戦し続けることへの思いを綴ったインタビュー
あなたにピッタリのアドバイスを読むことができます。
転職に必要な情報が収集できます
企業からアプローチのメッセージが届きます。