HashSet 怎么保证元素不重复的?

public boolean add(E e) {
    return map.put(e, PRESENT)==null;
 }

元素值作为的是 map 的 key,map 的 value 则是 PRESENT 变量,这个变量只作为放入 map 时的一个占位符而存在,所以没什么实际用处。其实,这时候答案已经出来了:HashMap 的 key 是不能重复的,而这里HashSet 的元素又是作为了 map 的 key,当然也不能重复了。

发表评论

后才能评论

评论(1)

  • kite 普通 2021-08-22 5:08 下午

    其本质是重写了hashCode()和equals(),前者定位桶的位置,后者比较元素的值。