看源码,hashSet 底层是通过hashMap来实现的,hashSet添加元素add方法
public boolean add(E e) { return map.put(e, PRESENT)==null; }
通过判断hashMap put方法是否有返回值,来判断是否添加成功
map.put(e, PRESENT)==null
hashMap如果key值存在,插入相同的key,返回值是上一个value,这就使得set在add相同元素的时候,map.put(e, PRESENT) != null,那么该元素add失败
保证了set元素插入不了重复的元素