- Point rp1 = new Point(3,3);
- Point rp2 = new Point(5,5);
- Point rp3 = new Point(6,6);
- HashSet set = new HashSet();
- set.add(rp1);
- set.add(rp2);
- set.add(rp3);
-
- rp2.y = 7;
- set.remove(rp2);
- System.out.println(set.size());
复制代码 rp2没有被删除,结果还是三。
当Hashset集合存储对象时,每添加一个元素都会先算出它的hashcode分段存储,也就是说对hashcode有一个映射。
因为Hashset中不能存储重复的对象,所以在添加一个元素时,需要对集合当中的元素进行equals比较,这个时候就会通过它的hashcode来判断这个hashcode所存储的区域是哪一块,然后再进入到那个区域去比较。这个时候就会造成内存泄漏 |