Java 哈希表出现次数

问题描述 投票:0回答:1

您好,我在理解哈希表时遇到问题。 我刚刚读到这是一个带有键和值的表。 这里我会计算文件中每个单词的出现次数。 它有效,但我不明白它背后的逻辑以及哈希表如何在这里工作,有什么帮助吗?

         String st;   
         HashMap<String, Integer> wordCountTable = new HashMap<String, Integer>();
         try {
            while ((st = br.readLine()) != null)
            {
                String uniqueWord = st.toLowerCase();
                //System.out.println(uniqueWord);
                Integer count = wordCountTable.get(uniqueWord);

                {
                    if(count != null) {

                        count ++; }
                    else
                        count = 1;  
                    wordCountTable.put(uniqueWord, count);
java hashtable
1个回答
0
投票

“...哈希表在这里是如何工作的,有什么帮助吗?”

澄清一下,有 Hashtable 类和 HashMap 类。
HashMap 类较新,来自 Collections Framework

这是代码摘要。

获取key的当前valueuniqueWord

count = wordCountTable.get(uniqueWord)

如果 wordCountTable.get 返回 null 值,表示 key 不存在,则递增 count
或者,分配 count1

if(count != null) {

    count ++; }
else
    count = 1;  

添加或替换 key uniqueWord,使用 value count

wordCountTable.put(uniqueWord, count)

此外,可以使用 putIfAbsent 方法简化此代码。

Map<String, Integer> m = new TreeMap<>();
try (BufferedReader r = new BufferedReader(new FileReader(""))) {
    String w;
    while ((w = r.readLine()) != null)
        if (m.putIfAbsent(w, 1) == null) m.replace(w, m.get(w) + 1);
}
© www.soinside.com 2019 - 2024. All rights reserved.