黑马程序员技术交流社区
标题:
求解答集合的删除
[打印本页]
作者:
yueye13
时间:
2015-2-9 20:16
标题:
求解答集合的删除
import java.lang.*;
import java.lang.reflect.*;
import java.util.*;
class ReflectTest2
{
public static void main(String[] args)
{
Collection c=new HashSet(); //新建一个集合
//创建反射点对象,并传入参数
ReflectPoint1 rp1=new ReflectPoint1(1,2);
ReflectPoint1 rp2=new ReflectPoint1(3,4);
ReflectPoint1 rp3=new ReflectPoint1(1,2);
//将反射点中得到的元素添加到集合中
c.add(rp1);
c.add(rp2);
c.add(rp3);
[color=Red]rp1.y=7; //修改y的值之后,删除时就找不到原来的rp1,所以无法删除,此时就会出现内存泄露
c.remove(rp1); //删除元素[/color]
System.out.println(c.size());
}
}
复制代码
对于上面,省略掉了反射点代码,打印长度还是2
先修改y的值,然后再删除集合元素,为什么就删不了rp1了呢,不是应该是修改了y的值之后,然后删除新的rp1吗?为什么删除的时候还是找的原来的rp1
作者:
wf111sxwf
时间:
2015-2-10 23:25
是不能修改参与 hashCode()算法的属性值,如果没有参与hashCode算法的话 你再改它也能删除, 至于你为什么能删除呢 你去看看你 反射点的hashcode算法里有没有用到Y
欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/)
黑马程序员IT技术论坛 X3.2