什么时候会调用 AbstractSet 的 equal 和 hashcode 方法?

When will equal and hashcode methods of AbstractSet get called?

AbstractSet 的 equal() 和 hashcode() 方法什么时候调用? AbstractSet 中的这些方法有什么用?

AbstractSet 的 equals 和 hashcode 方法将被任何不覆盖它们的 AbstractSet 的子class 继承。当将该集合用作集合或映射中的元素时,它们会被调用。

这些方法使用包含的元素来确定这个集合是否等于另一个集合。 JDK subclasses EnumSet, HashSet, and TreeSet 使用这些 equals 和 hashCode 的实现,API 文档将它们列在 Methods inherited from class java.util.AbstractSet.

我通过尝试示例示例找到了 hashcode() 问题的答案。 当您在 hashmap 中添加 set 元素作为键时,将调用 hashcode() 方法 例如:

Set<String> set = new HashSet<String>();
set.add("A");
set.add("B");
Map<Set<String>,String> m = new HashMap<Set<String>,String>();
m.put(设置,"B");

将调试点放在 AbstractSet 的 hashcode() 方法中,它将被调用。