Google Collection LibraryというJavaのコレクションフレームワークを見つけたので遊んでみることにしました。 コレクションフレームといえばApacheのCommons Collectionsが有名ですが、いつまでたってもGenericsに対応してくれないのでeclipseが警告を出しまくって真っ黄色になってしまうのでした。
Maven Repository何よりも先にMavenに登録されてるか調べました。
<dependency>
<groupId>com.google.collections</groupId>
<artifactId>google-collections</artifactId>
<version>1.0-rc2</version>
</dependency>
登録されてました。よかったよかった。現時点ではrc2が最新みたいです。
MultimapNew Collection types: Multimap, Multiset, BiMap and others http://code.google.com/p/google-collections/ 新しいコレクションクラスが用意されてるみたいです。Multimapから順に見て行きます。
Multimap<String, String> map = ArrayListMultimap.create();
map.put("好きな食べ物", "カレーライス");
map.put("好きな食べ物", "ラーメン");
map.put("好きな食べ物", "ハンバーグ");
map.put("プログラミング言語", "Java");
map.put("プログラミング言語", "C++");
map.put("プログラミング言語", "PHP");
map.put("プログラミング言語", "PHP");
map.get("好きな食べ物"); // [カレーライス, ラーメン, ハンバーグ]
map.keySet(); // [好きな食べ物, プログラミング言語]
map.keys(); // [好きな食べ物 x 3, プログラミング言語 x 4]
値を複数持つことができるMapですね。 get(K key) メソッドで値を取得すると、複数の値が格納されたリストが返ってきます。 keySet() は重複のないキーの集合を返し、keys() は重複も含めたキーの集合(後述するMultisetのオブジェクト)を返します。
{青森:[レコード1, レコード2,レコード3], 秋田:[レコード4,レコード5]}
みたいな、オブジェクトをグルーピングして格納したい場合に役立ちそうです。
MultisetMultiset 同一の値を複数格納できるSetです。
Multiset<String> set = HashMultiset.create();
set.add("男");
set.add("女");
set.add("男");
set.add("男");
set.add("女");
set.add("男");
set.add("女");
set.size(); // 7
set.count("男"); // 4
set.count("女"); // 3
set.entrySet(); // [女 x 3, 男 x 4]
set.elementSet(); // [女, 男]
BiMapBiMap 眠くなってきたのでまた今度 双方向Map?なんかキーと値を逆転することができるらしいです。実用する例が思いつかない... Trackback URL for this post:http://blog.smartnetwork.co.jp/staff/trackback/29
|
|||



Louis Watson
Robbie Cline
Suzy Kent
Carmine Rivas
Candi Fernandez
Efrain Rodriquez