首页 > 其他 > 详细

对于set的理解提高的一个问题

时间:2021-07-30 15:52:54      阅读:14      评论:0      收藏:0      [点我收藏+]
HashSet set = new HashSet();
Person p1 = new Person("AA",1001);
Person p2 = new Person("BB",1002);

set.add(p1);
set.add(p2);

p1.name = "CC";
set.remove(p1);//remove是通过调用hashCode方法计算哈希值找到要删除的索引位置进行删除,这时p1的name变了,也就是hashCode方法返回的是CC的哈希值,其索引位置与AA不同,所以删除不成功
System.out.println(set);//还是输出两个 CC 和 BB 
set.add(new Person("CC",1001));//这个时候添加,当然添加也是通过hashCode计算哈希值,找到底层数组所在的索引位置,然后发现为空,添加成功
System.out.println(set);//输出三个  其中两个CC 一个BB
set.add(new Person("AA",1001));//同理,先用hashCode计算哈希值,找到其索引位置,发现其位置上有元素,则再采用equals方法比对,发现equals返回false,则添加成功
System.out.println(set);//输出四个

技术分享图片

 

 

技术分享图片技术分享图片

对于set的理解提高的一个问题

原文:https://www.cnblogs.com/bestcw/p/15079030.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!