Guava Collection

1866 ワード

ClassToInstanceMapはMapインタフェース提供方法T getInstance(Class)とT putInstance(Class,T)から継承される
ClassToInstanceMapには単純なタイプのパラメータがあり、通常はBと呼ばれ、map制御の上位バインディングを表す
Guavaには、MutableClassToInstanceMapとImmutableClassToInstanceMapの2つの実装クラスが用意されています.
ClassToInstanceMapはMap,B>,あるいは,これはBのサブクラスからBオブジェクトへのマッピングである.
ただし、Bは常にMapの上位バインディングタイプであることを覚えておくと、通常はBはオブジェクトにすぎません.
RangeSetは一連の不連続で非空のrangeを処理するために使用される.RangeをRangeSetに追加すると、連続するrangeは自動的にマージされ、空のrangeは自動的に除去されます.
BiMapは、keyとvalueの双方向関連データ構造を提供する新しい集合タイプを提供します.
通常、JavaのMapを使用する場合、keyでvalueを検索することがよくありますが、次のシーンが発生すると、コードを追加で作成する必要があります.まず、識別番号とファイル名を表すmap構造を見てみましょう.
BiMap<String, Integer> user2ID = HashBiMap.create();
user2ID.put("one", 1);
user2ID.put("two", 2);
user2ID.put("three", 3);

String user = user2ID.inverse().get(1);
System.out.println("user name : " + user);

Javaでは、通常、統計語周波数は以下のようなコードを使用します~
Map<String, Integer> counts = new HashMap<String, Integer>();
for (String word : words) {
  Integer count = counts.get(word);
  if (count == null) {
    counts.put(word, 1);
  } else {
    counts.put(word, count + 1);
  }
}

Guavaは新しいデータ型を提供しています:Multiset
Wikipedia定義Multiset同じ要素を複数回出現させる
2つの主な表示方法:
1無秩序リスト(ArrayList)として使用
2要素と出現回数マッピング(Map)として使用
Guavaは、対応する標準JDK Map実装を実現するマルチマルチマルチセット実装を提供する
HashMultiset,TreeMultiset,LinkedHashMultiset,ConcurrentHashMultiset,ImmutableMultiset
Muitimapはkeyが複数のvalueに対応するデータ構造であるが、Mapのインタフェースは実現されていない.
Mapに対してパラメータkeyのようなputメソッドを2回変調した結果,2回目のvalueが1回目のvalueを上書きした.しかし、Muitimapにとってこのkeyは2つのvalueに同時に対応している.
http://www.ibm.com/developerworks/cn/java/j-lo-googlecollection/
https://code.google.com/p/guava-libraries/wiki/