所以我在理解如何执行此操作时遇到了一些困难。我正在 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/