黑马程序员技术交流社区

标题: 问如果一个hashmap添加了两个null作为键,会怎样 [打印本页]

作者: 张涛的狂怒    时间: 2014-8-9 10:10
标题: 问如果一个hashmap添加了两个null作为键,会怎样
本帖最后由 张涛的狂怒 于 2014-8-10 08:16 编辑

问如果一个hashmap添加了两个null作为键,会怎样。其value会覆盖吗?



作者: 刘沙    时间: 2014-8-9 10:23
hashMap的键是唯一的                
HashMap hm = new HashMap();
hm.put(null, "liu");
hm.put(null, "ww");
当你放入两个键一样的时候 这个时候相当于修改  结果是ww会覆盖liu
作者: yuli2039    时间: 2014-8-9 10:36
刘沙 发表于 2014-8-9 10:23
hashMap的键是唯一的                
HashMap hm = new HashMap();
hm.put(null, "liu");

带哈希的集合都要保证唯一性的
作者: 小洁呵呵    时间: 2014-8-9 10:59
一个键只能对应一个值,肯定会覆盖的
作者: 张涛的狂怒    时间: 2014-8-9 13:20
刘沙 发表于 2014-8-9 10:23
hashMap的键是唯一的                
HashMap hm = new HashMap();
hm.put(null, "liu");

如果两个键equals相同hashcode不同,他的value 还会被覆盖吗
作者: 张涛的狂怒    时间: 2014-8-9 13:21
小洁呵呵 发表于 2014-8-9 10:59
一个键只能对应一个值,肯定会覆盖的

如果两个键equals相同hashcode不同,他的value 还会被覆盖吗
作者: 张涛的狂怒    时间: 2014-8-9 13:23
刘沙 发表于 2014-8-9 10:23
hashMap的键是唯一的                
HashMap hm = new HashMap();
hm.put(null, "liu");

如果两个键equals相同hashcode不同,他的value 还会被覆盖吗
作者: 刘沙    时间: 2014-8-9 17:23
张涛的狂怒 发表于 2014-8-9 13:23
如果两个键equals相同hashcode不同,他的value 还会被覆盖吗

我认为 不会   

作者: 新语新空    时间: 2014-8-9 18:17
原则上HashMap是要保证Key唯一的,equals方法相同,hashCode不同的话,要看HashMap内部数据结构根据什么比较相同。像HashSet是先比较hashCode,相同的话再通过equals方法比较的。具体HashMap是怎样比较的,建议可以自己复写hashCode和equals方法,进行试验。
作者: 微微微笑    时间: 2014-8-9 19:46
HashMap,允许空作为键值,所以会覆盖
作者: 张涛的狂怒    时间: 2014-8-10 08:17
现在已经明白了
作者: 叶飞翔    时间: 2014-8-10 09:54
张涛的狂怒 发表于 2014-8-10 08:17
现在已经明白了

明白什么?hashCode不同的话,是不是就不会覆盖了呢?




欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/) 黑马程序员IT技术论坛 X3.2