JAVA:用于文档比较的最佳数据结构?

标签 java dictionary arraylist set

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

最佳答案

如果您只想比较出现的次数,您可以使用 map ,例如 HashMap , TreeMap ,或任何 other implementation .

键是单词(字符串),值是出现次数(整数)。您将仔细检查文档,并查找 map 中的每个单词。如果存在,则获取其当前出现的次数,并将其加一。如果没有,请插入出现次数为零的单词。这是一个代码片段:

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

关于JAVA:用于文档比较的最佳数据结构?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28227236/

相关文章:

java.util.ConcurrentModificationException 仅在多个触摸事件之后

java - 使用 MediaPlayer 时发生 FileNotFoundException

java - 使一个列表等于另一个列表的有效算法是什么?

java - 无法在线从wamp服务器访问mysql数据库

Java 8 - 收集具有 Set<?> 类型的列表属性作为一组值

Python:将嵌套列表的值与字典值相除

javascript - 具有多个图像的 map 区域的鼠标悬停过渡

dictionary - 根据 Airflow 中任务的输出字典动态生成多个任务

java - 如何从 csv 文件获取数据并制作购物 list

java - 在 JAVA 中将列表对象添加到另一个列表中