HashMap<String,Integer> counts = new HashMap<String, Integer>(); for (int i = 0; i < str.length(); i++) { char c = str.charAt(i); String sc = String.valueOf(c); if(counts.containsKey(sc)){ counts.put(sc, counts.get(sc) + 1); }else{ counts.put(sc, 0); } }统计每个字符出现的次数
时间: 2024-02-14 09:06:17 浏览: 56
java 读取csv 并转为Map<String,Object>
这段代码的问题在于,在计算字符出现次数时,应该将计数器的初始值设置为 1,而不是 0。此外,可以使用 `Map` 接口的 `getOrDefault()` 方法来更简洁地实现计数器的逻辑。以下是修复后的代码示例:
```java
HashMap<String, Integer> counts = new HashMap<String, Integer>();
for (int i = 0; i < str.length(); i++) {
char c = str.charAt(i);
String sc = String.valueOf(c);
counts.put(sc, counts.getOrDefault(sc, 0) + 1);
}
```
这里的 `getOrDefault()` 方法会返回给定键的值,如果该键不存在,则返回给定的默认值。在这个例子中,如果 `counts` 中已经有了当前字符 `sc` 的计数器,就将其值加 1;否则,将其值设置为 1。这样,就能正确地统计每个字符出现的次数。
阅读全文