本帖最后由 格子、 于 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
复制代码
|
|