黑马程序员技术交流社区
标题:
HashCode的理解
[打印本页]
作者:
Kikyou
时间:
2014-8-26 21:58
标题:
HashCode的理解
本帖最后由 格子、 于 2014-8-27 08:02 编辑
当使用HashSet集合时,会根据HashCode()方法计算出相应的HashCode值,通过equals()方法来比较集合中是否存在这个对象,当一个对象已经添加进去之后,再来修改这个对象中参与HashCode()方法计算时的变量,那么这个对象的HashCode值也会改变,原本相等的对象就不再相等了。
Collection<ReflectPoint> set = new HashSet<ReflectPoint>();
ReflectPoint rp2 = new ReflectPoint(3,3);
ReflectPoint rp3 = new ReflectPoint(5,5);
ReflectPoint rp4 = new ReflectPoint(3,3);
set.add(rp2);
set.add(rp3);
set.add(rp4);
rp2.y = 7;
set.remove(rp2);
System.out.println(set.size());//2
rp2.y = 3;
set.remove(rp2);
System.out.println(set.size());//1
复制代码
作者:
格子、
时间:
2014-8-27 08:07
hashcode()是利用哈希算法算的出哈希值,是在hashcode()的计算的值在一个区间equals比较对象的内容,在集合存储完对象,如果hashcode()方法的值你给改了就会造成内存泄漏!!!!!
作者:
lfs454766767
时间:
2014-8-27 08:11
看来又得复习了
作者:
TheBest__^
时间:
2014-8-27 10:26
不错, 受益匪浅!
作者:
彭卫红
时间:
2014-8-28 00:20
嗯嗯,
hashcode()是利用哈希算法算的出哈希值,是在hashcode()的计算的值在一个区间equals比较对象的内容,在集合存储完对象,如果hashcode()方法的值你给改了就会造成内存泄漏!!!!!
赞一个。。。。。。。。这种问题在集合中比较常见吧
欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/)
黑马程序员IT技术论坛 X3.2