Java 查找项目在数组中出现的次数=解释代码

Java 查找项目在数组中出现的次数=解释代码,java,methods,count,hashmap,items,Java,Methods,Count,Hashmap,Items,你能解释一下这个代码是如何工作的吗? 我不明白这个代码是如何工作的 HashMap<String, Integer> countMap = new HashMap<String, Integer>(); for (String string : strArray) { if (!countMap.containsKey(string)) { countMap.put(string, 1

你能解释一下这个代码是如何工作的吗? 我不明白这个代码是如何工作的

        HashMap<String, Integer> countMap = new HashMap<String, Integer>();
        for (String string : strArray) {
            if (!countMap.containsKey(string)) {
                countMap.put(string, 1);
            } else {
                Integer count = countMap.get(string);
                count = count + 1;
                countMap.put(string, count);
            }
        }
        printCount(countMap);
    }


    private static void printCount(HashMap<String, Integer> countMap) {
        Set<String> keySet = countMap.keySet();
        for (String string : keySet) {
            System.out.println(string + " : " + countMap.get(string));
        }
    }
}
HashMap countMap=newhashmap();
用于(字符串:strArray){
如果(!countMap.containsKey(字符串)){
countMap.put(字符串,1);
}否则{
整数计数=countMap.get(字符串);
计数=计数+1;
countMap.put(字符串,计数);
}
}
打印计数(countMap);
}
私有静态void打印计数(HashMap countMap){
Set keySet=countMap.keySet();
for(字符串:键集){
System.out.println(字符串+”:“+countMap.get(字符串));
}
}
}

最初,hashmap不包含任何值

 HashMap<String, Integer> countMap = new HashMap<String, Integer>();
在这里,您要检查映射是否包含迭代键,即字符串

它在第一次迭代(或countmap中不包含的任何键)中不使用,因此它将字符串作为键,1作为值

  if (!countMap.containsKey(string)) {              
     countMap.put(string, 1);
        } else {
如果countMap包含该字符串,则获取给定键的值,并在该值中添加一个值,然后将其放回countMap(基本上用递增值替换旧值)

稍后,您将打印密钥及其值

   printCount(countMap);
}

应该多解释一下。基本概念是将数组中的字符串作为键放入hashmap中,然后增加搜索发生的计数。如果某个特定字符串不在hashmap中,请将该字符串添加为键,并将计数设为1,然后继续增加计数。谢谢。你的链接非常有用。这意味着什么:?整数j=count.get(i);count.put(i,(j==null)?1:j+1;让我为您细分:
Integer j=count.get(i)从hashmap获取当前的i计数
count.put(i,
part将i作为键放入hashmap。
(j==null)?1:j+1)
检查当前计数是否为null(意味着要添加的项不在映射中)初始化计数,否则1将获取当前计数并增加1。希望这是有道理的。
            Integer count = countMap.get(string);
            count = count + 1;
            countMap.put(string, count);
        }

    }
   printCount(countMap);
}