HashSet 只会在 equals() 返回值相等时存储一次值。这就是我之前的理解。
但是现在,当 equals() 方法返回 true 时,我向 HashSet 添加元素,但集合的大小仍在增长?很抱歉,我感到困惑了。希望能给出一些提示,指出我的错误所在。
Element t1 = new Element(false, false, false, false);
Element t2 = new Element(true, true, true, true);
Element t3 = new Element(false, false, false, false);
if (t1.equals(t3))
System.out.println("they're equal");
Set<Element> set = new HashSet<>();
set.add(t1);
set.add(t2);
set.add(t3);
System.out.println("set size: " + set.size());
所以在这个例子中,我的控制台输出是:
它们是相等的
集合大小:3
这对我来说毫无意义...大小不应该是2吗?
hashCode
方法。 - Luiggi Mendoza