为了账号安全,请及时绑定邮箱和手机立即绑定

HashMap的String返回null,但返回Integer的值

HashMap的String返回null,但返回Integer的值

长风秋雁 2021-04-08 14:11:11
在使用HashMaps时,我发现一种奇怪的行为,   import java.util.HashMap;    public class Demo {        public static void main(String[] ar) {            HashMap<String, Integer> ht = new HashMap<>();            ht.put("1", new Integer(1));            ht.put("2", new Integer(2));            ht.put("3", new Integer(3));            System.out.println(ht.get(2));        }    }上面的代码输出null。但是,如果我将key作为Integer 1而不是string,则将检索到值。任何人都可以解释为什么原因,为什么要获取Integer值而不是String值。
查看完整描述

2 回答

?
肥皂起泡泡

TA贡献1829条经验 获得超6个赞

因为"2"不一样Integer(2)

一个String只能是equals()另一个String
见的Javadoc的String.equals()

其结果是true,当且仅当参数不null是一个String对象,它表示字符的相同序列与此对象。

一个Integer只能是equals()另一个Integer
见的Javadoc的Integer.equals()

其结果是true,当且仅当参数不null是一个Integer对象包含相同int的值作为该对象。

因此,由于"2"2彼此不相等,因此根据定义,它们不是相同的键HashMap


查看完整回答
反对 回复 2021-04-21
?
慕村9548890

TA贡献1884条经验 获得超4个赞

System.out.println(ht.get(2))

System.out.println(ht.get("2"))

因为键是StringType,而您传递IntType。


查看完整回答
反对 回复 2021-04-21
  • 2 回答
  • 0 关注
  • 249 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信