【发布时间】:2013-12-11 16:00:31
【问题描述】:
我需要制作一个程序来计算文本中每个单词的频率,另外我需要能够返回 n 个最常用单词的列表(如果更多的词具有相同的频率,它们按字母顺序排序)。还有一个不计算的单词列表(停用词)。
- 停用词使用什么结构
- 我认为 HashSet 效率最高
- 单词和频率映射使用什么结构
- HashMap 添加单词会更高效,但需要排序,TreeMap 插入单词需要 logn 时间,但单词可以按频率排序
总体而言,哪种方法更有效?
附: @Moderators 我知道有一个类似的question,但我有不同的约束,需要不同的结构。
【问题讨论】:
-
您的问题与您所指的问题有何不同?它看起来完全相似,并且该问题的公认答案也回答了您的问题。
-
@Roman 我不需要“按字母顺序打印每个唯一的单词”,我必须得到 k 最常用的单词。所以 treeMap 不是显而易见的解决方案。
标签: java data-structures map hashmap treemap