キーごとに (ハッシュベースの) 値のマルチセットを持つ (ハッシュベースの) マルチマップを作成しようとしています。例を参照してください。
Multimap<Object, Object> mmap = Multimaps.newMultimap(
Maps.<Object, Collection<Object>>newHashMap(),
new Supplier<Collection<Object>>() {
public Collection<Object> get() {
return HashMultiset.create();
}
});
mmap.put("1", "2");
しかしその後、
System.out.println(mmap.get("1") instanceof Multiset<?>);
//false, the returned collection is not a HashMultiset,
//but a (private) WrappedCollection
作成したマルチセットにアクセスできないようですか? これを Multiset (Multisets.unmodifiableMultiset() にラップ) として返すことができるようにしたかったのです。毎回新しいマルチセットにコピーしたくありません。元のコードに戻って、排除することを意味するMap<K, Multiset<V>>
複雑さをコードに追加する以外に、他に選択肢はありますか?Multimap