我在我的教科书中找到了这个程序,它基本上计算了字符串数组 tst 中每个字符串的出现次数。
public class Test {
private static HashMap<String, Integer> mp = new HashMap<String, Integer>();
public static void main(String[] args) {
String[] tst = new String[] { "ABC", "DEF", "DEF", "DEF","ABC", "DEF", "ABC" };
checkMap(tst);
}
public static void checkMap(String[] str) {
for (String st : str) {
if (!mp.containsKey(st)) {
mp.put(st, 1);
}
else {
Integer ct = mp.get(st);
if(ct!=null)
{
ct++;
mp.put(st, ct);
}
}
}
for (Map.Entry<String, Integer> entry : mp.entrySet()) {
System.out.println(entry.getKey() + " ocurrs " + entry.getValue()+ " times");
}
}
}
代码的输出是 -
ABC ocurrs 3 times
DEF ocurrs 4 times
我的问题在这里的 if/else 语句中-
if (!mp.containsKey(st)) {
mp.put(st, 1);
}
else {
Integer ct = mp.get(st);
if(ct!=null)
{
ct++;
mp.put(st, ct);
}
}
当我们没有在 hashmap 中放置任何条目(hashmap 为空)时,这在什么基础上起作用?如果这是一个非常基本的问题,我深表歉意,但我在网上找不到任何解释这一点的答案。我对 if/else 循环中写的内容感到困惑。另外,这里的这条线 -
Integer ct = mp.get(st);
当哈希图实际上是空的时,我们如何获得键映射到的值?我试图将其与数组相关联 - 如果您在创建数组但未初始化后查询数组的元素,它会抛出一个空指针。有人,请解释一下这对哈希图是如何工作的。再次为提出这样一个基本问题而道歉。