【发布时间】:2017-12-09 20:57:51
【问题描述】:
我的代码有问题。 我正在阅读带有一些文本的文件,然后计算单词及其频率。然后我试图打印出文本中最常用的 10 个单词。
但是,通过我尝试过的方法(例如,将 for 循环设置为在 10 次迭代后停止),我以相同的方式仅打印了 10 次单词。否则,我可以按频率打印文件中的所有单词。我只需要前 10 个最常用的单词。
ArrayList<Integer> values = new ArrayList<>();
values.addAll(wordcount.values());
Collections.sort(values, Collections.reverseOrder());
int last_i = -1;
for(Integer i: values) {
if (last_i == i)
continue;
last_i = i;
System.out.println("The top 10 words are: ");
// for (int count = 0; count < 10; count++) {
for (String s : wordcount.keySet())
if (wordcount.get(s) == i)
System.out.println(s + " : " + i);
}
}
}
请在上面找到“有问题的”代码。我正在使用
BufferedReader
读取文本文件,然后删除所有标点符号和可能导致同一单词在我的 HashMap 中显示为两个不同条目的内容。
非常感谢任何帮助。谢谢!
【问题讨论】:
-
好吧,只需制作 HashMap 并按值对其进行排序,然后打印出 Key:Value 对。
-
Thisleetcode 上的讨论解决了类似的问题。
标签: java hashmap word-count