Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/391.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
JAVA:文档比较的最佳数据结构?_Java_Dictionary_Arraylist_Set - Fatal编程技术网

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

JAVA:文档比较的最佳数据结构?,java,dictionary,arraylist,set,Java,Dictionary,Arraylist,Set,我正在写一个程序,根据多个文档的共同点比较它们。我能够标记所有单词并将它们存储在ArrayList中,因为它允许重复。然而,我不确定这是最好的方法。我需要在ArrayList中找到前50个最常用的单词,但我真的不知道如何做到这一点。此操作是否有更好的数据结构?如果您只想比较发生的情况,可以使用地图,如a或任意 键为单词(字符串),值为出现次数(整数)。您将浏览文档,查找地图中的每个单词。如果它存在,则获取其当前出现次数,并将其增加1。如果没有,请插入出现计数为零的单词。下面是一段代码片段:

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

如果您只想比较发生的情况,可以使用地图,如a或任意

键为单词(字符串),值为出现次数(整数)。您将浏览文档,查找地图中的每个单词。如果它存在,则获取其当前出现次数,并将其增加1。如果没有,请插入出现计数为零的单词。下面是一段代码片段:

    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);
    }
HashMap-occurrencemap=newhashmap();
for(字符串字:文档){
整数wordoccurrences=occurrencemap.get(word);
if(wordoccurrences==null){
WordOccurrences=Integer.valueOf(1);
}否则{
单词出现次数+=1;
}
occurrencemap.put(word,wordoccurrences);
}

是的,我稍后会这样做,但首先我需要知道发生了什么。现在,我可以访问文档中的所有单词,它们保存在一个ArrayList中,就像它们与副本一样。你能解释一下我是怎么做到的吗?@user1765804如果你坚持数组列表(如果真的不需要存储副本,那么存储整个文档似乎是浪费),那么只需迭代数组列表,并使用映射来计算每个单词的出现次数,就像我解释的那样。我愿意做其他事情,但我想我只是没有完全理解你第一次评论的意思。我需要复制,因为这样我才能知道哪些单词更频繁。我正在迭代文档,并在过程中添加每个单词。那一步我该怎么做呢?好的,谢谢你,这很有帮助。我最后做了一些非常类似的事情!