个人观点:
我们都知道HashSet集合里的元素是无序的且是不可重复的,
究其原因是因为我们要存入集合里的对象所继承或自己重新实现的
hashCode()和equals()方法.只有返回的hashCode相同,才能判断对象相等.
当我们把一个对象存储到HashSet集合中以后,就不能再修改这个对象的参与计算
哈希值的字段了,否则对象修改后的哈希值与最初的存储进HashSet集合中的
哈希值就不同了,所以,当你再次调用方法利用该对象的当前引用去HashSet集合中
去检索该对象,就会出现对象找不到的结果,同样的原理,如果你调用集合的remove()
方法去删除当前对象,同样无法从集合中删除,从而造成内存泄露. |