您的代码将调用
equals()的
HashTest唯一一次。另一次调用
equals()方法将是
equals()对的
String类。
hs.add(h1); // Nothing is calledhs.add(h2); // Calls the equals() method of HashTest, thus the loghs.add(s1); // Nothing is calledhs.add(s2); // Calls the equals() method of String
此答案说明何时
equals()由
HashSet和何时调用方法。摘录:
HashSet利用哈希码来加快处理速度。假定彼此相等的两个对象将具有相同的哈希码。但是,它不假定具有相同哈希码的两个对象意味着它们相等。这就是为什么当它检测到冲突的哈希码时,它仅与具有相同哈希码的集合中的其他对象(在您的情况下为一个)进行比较。



