在使用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。
慕村9548890
TA贡献1884条经验 获得超4个赞
System.out.println(ht.get(2))
至
System.out.println(ht.get("2"))
因为键是StringType,而您传递IntType。
添加回答
举报
0/150
提交
取消
