HashSet add ()元素时,判断元素是否存在的依据,不仅要比较hash值,同时还要结合 equles 方法比较。 HashSet 中的 add ()方法会使用 HashMap add ()方法。以下是 HashSet 部分源码:

image.png

HashMap key 是唯一的,由上面的代码可以看出 HashSet 添加进去的值就是作为 HashMap key。所以不会 重复( HashMap 比较key是否相等是先比较 hashcode 在比较 equals )。