java - 从 Map 中的 Value 找到 Key

标签 java treemap

所以我在理解如何执行此操作时遇到了一些困难。我正在 Java 中使用 Map<String, Integer> 构建一个字计数器其中单词是 String .txt 文档中该单词的出现次数为 Integer 。这一切都很好......但我正在尝试开发一个部分,它将在底部显示前 5 个结果是什么 ---> 前 5 个结果 map.values()是。

我遇到的问题是在找到值后,我无法获取字符串。

任何建议都会对我很有帮助。

最佳答案

您需要使用Map.Entry<String, Integer>获取键和值对。

values()方法仅返回值,而 keySet()方法仅返回键。

首先,您应该根据值对 map 进行排序,以获得前五个结果。 最简单的方法是使用 Comparator 。查看答案here了解更多。

然后您只需获取 map.getEntrySet() 的前五个条目即可。使用 Iterator 会更容易为此。

更新:

    Set<Entry<String, Integer>> set = wordCount.entrySet();
    List<Entry<String, Integer>> list = new ArrayList<Entry<String, Integer>>(set);
    Collections.sort(list, new Comparator<Map.Entry<String, Integer>>() {
        public int compare(Map.Entry<String, Integer> o1, Map.Entry<String, Integer> o2) {
            return o2.getValue().compareTo(o1.getValue());
        }
    });

    int topResults = 5;
    Iterator<Entry<String, Integer>> iter = list.iterator(); //refer the sorted collection
    while (iter.hasNext() && topResults > 0 ) {
        Map.Entry<String, Integer> entry = iter.next();
        System.out.println(entry.getKey() + "->" + entry.getValue());
        topResults --;
    }

关于java - 从 Map 中的 Value 找到 Key,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36705234/

相关文章:

java - 如何用java编写自己的比较器类?

java - 我怎样才能不通过 putAll() 覆盖值而是添加到当前值?

python - 使绘图树状图也显示负值(Python)

java - Comparator<String> 必须覆盖父类(super class)方法

java - 当我在 netbeans 上使用 Maven 创建 Java Web 项目时,应该忽略哪些文件和文件夹?

java - 如何使用基于 Java 的配置使用 Hibernate 和 MySQL 自动生成表。

java - 带有 Java 客户端的 golang 服务器

java - TreeMap中的这个空指针异常是不是并发访问导致的?

java - Android 和 OpenCV - 应用程序因 UI 更改而崩溃

java - 为什么我不能在 Collectors.groupingBy 中使用 lambda 而不是方法引用?