我仍然对此很好奇,并编写了以下测试:
import java.util.HashSet;import java.util.Iterator;import java.util.Random;import java.util.Set;public class HashCodeTest { private int hashCode = 0; @Override public int hashCode() { return hashCode ++; } public static void main(String[] args) { Set<HashCodeTest> set = new HashSet<HashCodeTest>(); set.add(new HashCodeTest()); System.out.println(set.size()); for (Iterator<HashCodeTest> iter = set.iterator(); iter.hasNext();) { iter.next(); iter.remove(); } System.out.println(set.size()); }}结果是:
11
如果自从将对象的hashCode()值添加到HashSet以来已更改,则似乎使该对象不可移动。
我不确定这是否是您遇到的问题,但是如果您决定重新访问此问题,则需要调查一下。



