A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

本帖最后由 张涛的狂怒 于 2014-8-10 08:16 编辑

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


11 个回复

倒序浏览
hashMap的键是唯一的                
HashMap hm = new HashMap();
hm.put(null, "liu");
hm.put(null, "ww");
当你放入两个键一样的时候 这个时候相当于修改  结果是ww会覆盖liu
回复 使用道具 举报 1 0
刘沙 发表于 2014-8-9 10:23
hashMap的键是唯一的                
HashMap hm = new HashMap();
hm.put(null, "liu");

带哈希的集合都要保证唯一性的
回复 使用道具 举报
一个键只能对应一个值,肯定会覆盖的
回复 使用道具 举报
刘沙 发表于 2014-8-9 10:23
hashMap的键是唯一的                
HashMap hm = new HashMap();
hm.put(null, "liu");

如果两个键equals相同hashcode不同,他的value 还会被覆盖吗
回复 使用道具 举报
小洁呵呵 发表于 2014-8-9 10:59
一个键只能对应一个值,肯定会覆盖的

如果两个键equals相同hashcode不同,他的value 还会被覆盖吗
回复 使用道具 举报
刘沙 发表于 2014-8-9 10:23
hashMap的键是唯一的                
HashMap hm = new HashMap();
hm.put(null, "liu");

如果两个键equals相同hashcode不同,他的value 还会被覆盖吗
回复 使用道具 举报
张涛的狂怒 发表于 2014-8-9 13:23
如果两个键equals相同hashcode不同,他的value 还会被覆盖吗

我认为 不会   
回复 使用道具 举报
原则上HashMap是要保证Key唯一的,equals方法相同,hashCode不同的话,要看HashMap内部数据结构根据什么比较相同。像HashSet是先比较hashCode,相同的话再通过equals方法比较的。具体HashMap是怎样比较的,建议可以自己复写hashCode和equals方法,进行试验。
回复 使用道具 举报
HashMap,允许空作为键值,所以会覆盖
回复 使用道具 举报
现在已经明白了
回复 使用道具 举报

明白什么?hashCode不同的话,是不是就不会覆盖了呢?
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马