您好,我在理解哈希表时遇到问题。 我刚刚读到这是一个带有键和值的表。 这里我会计算文件中每个单词的出现次数。 它有效,但我不明白它背后的逻辑以及哈希表如何在这里工作,有什么帮助吗?
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);
“...哈希表在这里是如何工作的,有什么帮助吗?”
澄清一下,有 Hashtable 类和 HashMap 类。
HashMap 类较新,来自 Collections Framework。
这是代码摘要。
获取key的当前value,uniqueWord。
count = wordCountTable.get(uniqueWord)
如果 wordCountTable.get 返回 null 值,表示 key 不存在,则递增 count。
或者,分配 count,1。
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);
}