以上是HastSet的空构造器,以及add方法
可以看出,当HashSet hashSet = new HashSet();时,
创建了 hashmap:private transient HashMap<E,Object> map;
在add(E e)方法中,将e 作为参数存入HashMap的key中,
所以不会重复( HashMap 比较key是否相等是先比较 hashcode 在比较 equals )
因为hashSet的存储原理是调用hashMap的put 方法,所以同样调用了hashCode方法存储值的位置,如图:
以上为hashMap的put方法,可看出,通过调用hash(Object key)方法,生成key对应的hashCode,所以hashMap和hashSet都调用hashCode方法,都根据所生成的hashCode存储值