当前位置: 首页 > 面试题库 >

如何使用非唯一值的番石榴进行地图反演?

史默
2023-03-14
问题内容

我们如何用番石榴来做到这一点?注意List<K>返回类型的存在,因为许多键可以在任何法线映射中映射到相同的值。

public static <K, V> Map<V, List<K>> inverse(Map<K, V> map){
    Map<V, List<K>> result = new LinkedHashMap<V, List<K>>();
    for (Map.Entry<K, V> entry : map.entrySet()) {
        if(!result.containsKey(entry.getValue())){
            result.put(entry.getValue(), new ArrayList<K>());                
        }
        result.get(entry.getValue()).add(entry.getKey());
    }        
    return result;        
}

BiMap 似乎坚持价值观的统一性,但我没有这种奢侈。


问题答案:

你可以这样做:

Map<K, V> map = ...;
ListMultimap<V, K> inverse = Multimaps.invertFrom(Multimaps.forMap(map), 
    ArrayListMultimap.<V,K>create());

请注意,几乎在您每次编写Map<K, List<V>>Map<K, Set<V>>类似内容时,a ListMultimap<K, V>或a
SetMultimap<K, V>都是您真正想要的。



 类似资料:
  • 问题内容: 我有一个的关键无非是像“123”等我得到的数值,因为这个数值是从UI在我的JSF组件来数值。我不想更改UI组件的合同。 现在,我想基于上面创建一个,我在类中看到了一些方法,但是所有方法都集中在转换值而不是键上。 有没有更好的转换方法? 问题答案: Java 8的更新 您可以使用流来执行此操作: 假定所有键都是s的有效字符串表示形式。另外,转换时可能会发生冲突;例如,与两个地图。 我认为

  • 问题内容: 编辑: 我已经重新组织了这个问题,以反映自从可用以来的新信息。 请先阅读此问题及其答案,但基本上得出的结论是,番石榴图不会异步计算和执行驱逐。给出以下地图: 进入条目后经过十分钟后,直到再次“触摸”地图后,该条目仍不会退出。执行此操作的已知方法包括常用的访问器- 和和 。 我的问题的第一部分[已解决]: 还有哪些其他调用导致地图被“触摸”?具体来说,有谁知道是否属于这一类? 对此感到疑

  • 问题内容: 我有一个来自Guava 的对象(Gooogle集合)。它采用的形式。并实施。现在,当我显示表格时,我希望用户能够以不同的方式对表格进行排序以更改值的顺序。 我尝试的方法是遍历表,并为每个值更改在Compare方法中使用的变量。麻烦在于,它一次通过循环,然后返回a ,我认为我已经缩小到尝试在遍历它的同时更改顺序(菜鸟的错误,我知道)。 所以我想知道,重新排序这张桌子的好方法是什么? 问题

  • 问题内容: 我在commons- lang中使用了简单的DTO。现在,我尝试使用Google Guava代替Apache Commons库。我在番石榴找到了。但是如果班上有很多成员,这太冗长了。例如: 如果我使用commons-lang,则简单得多: 有什么更好的方法可以用Guava而不是commons-lang 来实现? 番石榴文件 问题答案: 我有番石榴的小招。我将 IntelliJ IDEA

  • 问题内容: 刚刚发现了Guava库项目。 这些与GWT兼容吗? 问题答案: 从该页面的介绍性PDF中, 您可以在…上使用这些库。 在JDK 6上 在Android上, 我们认为。需要志愿者来帮助我们进行测试。 在Google App Engine上, 我们认为。需要志愿者来帮助我们进行测试。 在GWT上-参差不齐! 由于GWT的JDK库支持 可能参差不齐,也许是2/3,所以到目前为止,这些库中的东

  • 问题内容: 在我的Java代码中,我通过以下方式使用Guava的Multimap(com.google.common.collect.Multimap): 此处,Multimap键是URL的一部分,而值是URL的另一部分(转换为整数)。现在,我分配了JVM 2560 Mb(2.5 GB)堆空间(通过使用Xmx和Xms)。但是,它只能存储900万个这样的(键,值)整数对(大约1000万个)。但是,理