【发布时间】:2013-10-05 02:00:01
【问题描述】:
我遇到了以下问题 - 我收到了一个文本文件,其中包含大量允许重复的单词。我需要编写一个算法,以降序输出出现频率最多的 1000 个单词。这是一个例子
**input.txt**
aa aa bb cc bb bb bb dd dd
**output.txt** (note - frequencies can be repeated)
bb 4
aa 2
dd 2
cc 1
这是我解决此问题的方法。首先读取所有的单词并将它们存储在
HashMap中,以word为key。这样做的最终结果是我拥有了所有单词及其频率。现在我遍历
HashMap并为每个键值对创建一个对象 {word, frequency} 然后我将它插入到SortedSet中(我为此编写了一个比较器)。现在我只需遍历
SortedSet1000 次即可获得结果。
我想知道解决这个问题的更好方法。
谢谢
【问题讨论】:
-
非常正确,我也会这样做。
-
见:stackoverflow.com/questions/185697/…,最值得注意的是他们使用堆。
-
谢谢威廉。该链接看起来很有用。
标签: java algorithm sorting hashmap