【发布时间】:2015-01-30 00:27:30
【问题描述】:
我正在编写一个程序,它可以根据多个文档的共同词来比较多个文档。我能够标记所有单词并将它们全部存储在 ArrayList 中,因为它允许重复。但是,我不确定这是最好的方法。我需要在 ArrayList 中找到前 50 个最常用的单词,但我不太确定该怎么做。这个操作有更好的数据结构吗?
【问题讨论】:
标签: java dictionary arraylist set
我正在编写一个程序,它可以根据多个文档的共同词来比较多个文档。我能够标记所有单词并将它们全部存储在 ArrayList 中,因为它允许重复。但是,我不确定这是最好的方法。我需要在 ArrayList 中找到前 50 个最常用的单词,但我不太确定该怎么做。这个操作有更好的数据结构吗?
【问题讨论】:
标签: java dictionary arraylist set
如果您只想比较出现次数,可以使用HashMap、TreeMap 或任何other implementation 等映射。
键是单词(字符串),值是出现次数(整数)。您将浏览您的文档,并在地图中查找每个单词。如果存在,则获取其当前的出现次数,并将其加一。如果没有,请插入出现次数为零的单词。这是一个代码sn-p:
HashMap<String, Integer> occurenceMap = new HashMap<>();
for (String word : document) {
Integer wordOccurences = occurenceMap.get(word);
if (wordOccurences == null) {
wordOccurences = Integer.valueOf(1);
} else {
wordOccurences += 1;
}
occurenceMap.put(word, wordOccurences);
}
【讨论】: