程序员总是有踩不完的坑,今天就在HashSet
这个类上栽了跟头。终究还是自己对HashSet
集合理解不够深刻。下面就来说一下问题及原因。
Question
首先用一个简单的例子描述一下问题。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29
| public class HashCodeTest { int hashCode = 0; //重写Object对象中的save方法 @Override public int hashCode() { return ++hashCode; } public static void main(String[] args) { Set<HashCodeTest> hashCodeTests = new HashSet<>(); HashCodeTest hashCodeTest = new HashCodeTest(); System.out.println(hashCodeTest.hashCode()); hashCodeTests.add(hashCodeTest); System.out.println(hashCodeTests.size()); //迭代 Iterator<HashCodeTest> iterator = hashCodeTests.iterator(); while (iterator.hasNext()) { iterator.next(); iterator.remove(); } System.out.println(hashCodeTests.size()); } }
|