java - HashMap 中公共(public)值的返回键

标签 java

我有一个 HashMap 。多个键具有相同的值。找到 的最佳方法是什么

重复值的键,无需迭代。 ?

阅读this文档感觉没有它的功能。

注意:键|值对是Int类型

最佳答案

无论怎样,您最终都会迭代该集合。在某些库中,迭代可能是隐藏的,但它必然存在。

您可以轻松编写一个简单的方法来完成您的需要:

public static <K,V> Set<K> keysOfDupValues(Map<K,V> m) {
    Set<K> res = new HashSet<K>();
    Map<V,K> seen = new HashMap<V,K>();
    for (Map.Entry<K,V> e : m.entrySet()) {
        V v = e.getValue();
        K k = e.getKey();
        if (seen.containsKey(v)) {
            res.add(k);
            res.add(seen.get(v));
        } else {
            seen.put(v, k);
        }
    }
    return res;
}

Demo on ideone .

关于java - HashMap 中公共(public)值的返回键,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15249190/

相关文章:

java - 为什么是 NullPointerException?

java - 正则表达式:匹配并替换字符串中的模式,同时将匹配字符串的一部分保留在替换字符串中

java - WebSphere 7 上的数据源配置

java - 这个构造是如何调用的,哪些语言支持它?

java - 立即更改 JLabel

java - 通过查询字符串的 REST api

java - 每次我在按钮的 Onclick 监听器中运行此 "if else"条件语句时,Android 应用程序都会关闭

java - JTable 显得更小

java - @VisibleForTesting 和@Deprecated int 单元测试之间的区别

javabean 到 xmltype 字符串