java - Multimap 与 HashMultiset 值

标签 java collections guava multimap

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

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() 中)。我也不想每次都将它复制到一个新的 Multiset 中。除了切换回 Map<K, Multiset<V>>,我还有其他选择吗?并在我的代码中添加 Multimap 的复杂性意味着消除?

最佳答案

恐怕这似乎是不可能的。您应该提交功能请求。我暗暗怀疑那些狡猾的 Google 员工有一种漂亮的 Multimap,他们可能会发布这种 Multimap,这可能会对您有所帮助。

关于java - Multimap 与 HashMultiset 值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2119347/

相关文章:

java - Spring Boot 电子邮件发送抛出 SocketTimeoutException : Read timed out

java - scala - bash : hw. scala:权限被拒绝

java - 带有HBase的Hadoop:类路径中存在 Guava jar ,但是执行抛出 “ThreadFactoryBuilder”类未找到类异常

java - 字符串索引超出范围 : 0 Error For using RedirectAttributes in Spring Boot

java - 基本的 spring 依赖注入(inject)问题,没有 setter 只有 getter

java - 如何使我的 ArrayList 线程安全? Java中解决问题的另一种方法?

java - 如何在 Guava Optional 中保存空值

java - Guava Cache 属性动态更新

java - String IdentityHashMap 与 HashMap 性能对比

java - 如何序列化将对象保存在文件编辑上或清空它并再次填充它(查看前)?