我正在编写一个程序,根据它们的共同词比较多个文档。我能够标记所有单词并将它们全部存储在ArrayList中,因为它允许重复。但是,我不确定这是最好的方法。我需要在ArrayList中找到前50个最常用的单词,但我不确定如何做到这一点。此操作是否有更好的数据结构?

最佳答案

如果只想比较出现次数,则可以使用诸如HashMapTreeMap或任何other implementation的映射。

键将是单词(String),值将是出现的次数(Integer)。您将遍历文档,并查找地图中的每个单词。如果存在,则获取其当前的出现次数,并将其增加一。如果不是,请插入出现次数为零的单词。这是一个代码片段:

    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);
    }

10-08 09:03