java - 将 HashMap 键与文本文件中的单词进行比较并更新值

标签 java hashmap

我一直在使用 HashMap 来存储文本文件中的唯一单词。现在,我需要将 HashMap 中的每个单词与另一个较大的文本文件进行比较,并跟踪每个单词在文本文件中出现的频率。

首先添加到 HashMap 时,我只插入键并将值设置为 0。我的计划是使用“值”作为较大文本文件中每个单词的频率。

我的尝试如下;我首先使用扫描仪读取原始文件并将单词存储到 HashMap 中。接下来,我再次使用扫描仪,但这次与较大的文本文件相关联。从这里开始,我就有点卡住了。我不知道如何更新“值”并对“键”建立索引。

这是我所拥有的;

Scanner fileScanner = new Scanner (new File (fileName));
fileScanner.useDelimiter (" ");

while (fileScanner.hasNext()) {
    for (int i = 0; i < hashmap.size(); i++) {   //This I use to index the key field
        if (hashmap.get(i).equals(fileScanner.next().toString()) {
            int freq ++;
            //How do I update the value field of the corresponding value?
        }
    }
}

现在,显然,上面的代码中没有任何内容起作用,并且我在找出方法时遇到了一些问题。有人可以帮我吗?

最佳答案

你的 map 应该是Map<String, Integer> :对于每个单词,您都有一个整数存储该单词出现的次数。

获取单词出现的次数: Integer numberOfOccurrences = map.get(word);

要测试该单词是否在 map 中:if (numberOfOccurrences != null)

要增加出现次数:numberOfOccurrences++;

要将这个新值存储在 map 中:map.put(word, numberOfOccurrences);

没有理由迭代 map 。您逐字读取文件,并使用上述内容来增加每个单词的出现次数。

关于java - 将 HashMap 键与文本文件中的单词进行比较并更新值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10869781/

相关文章:

java - 使用apache solr进行特定列的数据搜索

java - 根据 HashMap 中的比较值从数组中删除值

Java HashMap 内部

Java 哈希表和 HashMap

java - Spring - Java Map HashMap to Multi-Layer Pojo

java - 对 hashmap 的值进行排序

java - 为什么 eclipse 强制我使用 final ?

java - 如何让 Maven 解析由某个分类器的非默认配置文件创建的依赖项的依赖项?

java - 如何在 ADF 应用程序中链接我的 WebLogic 用户

java-8 - 为什么 Java 8 的 ToIntFunction<T> 不扩展 Function<T, Integer>