我不明白为什么这个哈希映射例程没有按预期添加我的字符计数。我怀疑这与 Character 和 char 之间的转换有关,但我不确定。每个字符的计数始终为 1。
String s = "loveleetcode";
Map<Character, Integer> hm = new HashMap<Character, Integer>();
for (int x = 0; x < s.length(); x++) {
hm.put(s.charAt(x), hm.getOrDefault(hm.get(s.charAt(x)), 0) +1);
}
Run Code Online (Sandbox Code Playgroud)
我想你想改变路线;
hm.put(s.charAt(x), hm.getOrDefault(hm.get(s.charAt(x)), 0) +1);
Run Code Online (Sandbox Code Playgroud)
到
hm.put(s.charAt(x), hm.getOrDefault(s.charAt(x), 0) +1);
Run Code Online (Sandbox Code Playgroud)
在原始代码hm.get(s.charAt(x))中将返回null,并且该密钥将不存在。尽管 的null类型为Integer, Map.getOrDefault(或者实际上get)接受Object该参数,因为这使得Map接口可以更好地与 Java 的有界泛型配合使用。
char可以自动装箱就Character可以了。只要不是,Character就可以自动拆箱。charnull
| 归档时间: |
|
| 查看次数: |
2445 次 |
| 最近记录: |