HashSet可以认为就是在HashMap上包了一层
一 存储:HashSet用HashMap存储数据,并且只有key值是有效数据,value部分用了一个Object常量。因为HashMap是不允许重复键的,所以HashSet不能有重复数据
// Dummy value to associate with an Object in the backing Map
private static final Object PRESENT = new Object();
private transient HashMap<E,Object> map;
public boolean add(E e) {
return map.put(e, PRESENT)==null;
}
二 遍历:数据都存储到了HashMap的key中,自然遍历用的是HasnMap的keySet遍历
public Iterator<E> iterator() {
return map.keySet().iterator();
}