为何HashMap的getOrDefault方法未返回预期值1?
问题原因解析
先看你这段代码:
HashMap<String, Integer> map = new HashMap<>(); map.put("Mike", 1); System.out.println(map.get("Mike")); // 1 System.out.println(map.getOrDefault(map.get("Mike"), 0)); // 0
第二个输出是0的核心原因是你用错了getOrDefault的参数:
getOrDefault的第一个参数要求是HashMap的键,而不是值- 你这里传的
map.get("Mike")返回的是值1,但你的HashMap里根本没有键为1的条目(你的键都是String类型,值是Integer) - 因为找不到键
1对应的条目,所以方法返回了你指定的默认值0
如果想实现“获取键Mike对应的值,不存在就返回0”的逻辑,正确写法应该是:
System.out.println(map.getOrDefault("Mike", 0)); // 输出1
这样直接传键"Mike",因为键存在,就会返回对应的值1。
内容的提问来源于stack exchange,提问作者Ninininickname
相关产品推荐
相关产品推荐

