栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > Java

记录:为啥HashMap可以存放null,但是Hashtable不能存放?

Java 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

记录:为啥HashMap可以存放null,但是Hashtable不能存放?

话不多说,直接上代码

@SuppressWarnings({"all"})
public class HashMapDemo4 {
    public static void main(String[] args) {
//        先看hashMap
        Map hashMap = new HashMap<>();
        hashMap.put(null,null);
        Map hashtable = new Hashtable<>();
        hashtable.put(null,null);
    }
}

这时直接在hashMap的put()上打上断点,进行debug调试

  当我们进入hash()时,可以看到, 当key为null时, 会给一个默认值0返回,  也就是说当key == null时,并不会调用hashCode(),因此也就不会出现空指针异常了

 这时,我们将断点打在下面一个put方法上

进入put()方法后,直接就来了一手value空值判断。。如果为空就直接抛出空指针异常

 显然不失众望。。。

注意在put方法的下有  int hash = key.hashCode(); 这样当key为null时,也会直接抛出空指针异常。。至此这就是为啥 hashMap中key与value都可以添加null,而hashtable中key与value都不能添加null的原因了。。。

转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/286982.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号