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

在使用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值。


长风秋雁
浏览 250回答 2
2回答

肥皂起泡泡

因为"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

System.out.println(ht.get(2))至System.out.println(ht.get("2"))因为键是StringType,而您传递IntType。
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

Java