You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

为何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

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.08 23:00:56