热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

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

如何解决《HashMap为String返回null,但为Integer返回值》经验,为你挑选了1个好方法。

在使用HashMaps时,我发现了一个奇怪的行为,

   import java.util.HashMap;

    public class Demo {
        public static void main(String[] ar) {
            HashMap 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.但是如果我将键作为整数1而不是字符串,则检索值.任何人都可以解释原因,为什么检索Integer值而不是String值.



1> Andreas..:

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

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

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

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

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

因此,既然"2"并且2彼此不相等,根据定义,它们在a中是不同的键HashMap.


推荐阅读
author-avatar
追麾
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有