带有HashMultiset的Multimap用于值

Dim*_*eou 9 java collections multimap guava

我正在尝试为每个键创建一个(基于散列的)Multimap,其中包含一个(基于散列的)Multiset值.看例子:

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");
Run Code Online (Sandbox Code Playgroud)

但是之后,

System.out.println(mmap.get("1") instanceof Multiset<?>); 
//false, the returned collection is not a HashMultiset,
//but a (private) WrappedCollection
Run Code Online (Sandbox Code Playgroud)

所以我似乎无法访问我创建的多重集?我希望能够将其作为Multiset(包含在Multisets.unmodifiableMultiset()中)返回.我不希望每次都将它复制到新的Multiset中.除了切换回Map<K, Multiset<V>>代码并添加我Multimap想要消除的复杂性之外,我还有其他选择吗?

Kev*_*ion 6

我担心这似乎不可能.您应该提交功能请求.我有一种狡猾的怀疑,那些狡猾的谷歌人有一个漂亮的Multimap,他们可能会发布这些可能对你有帮助的东西.

  • 我也喜欢这个.没有机会在过去的四四年里发生过? (2认同)