HashSet源码分析

存储结构: 通过hashmap来存储的  
private transient HashMap<E,Object> map;

构造方法:
 public HashSet(int initialCapacity, float loadFactor) {
	map = new HashMap<E,Object>(initialCapacity, loadFactor);
    }

Add方法:其中PRESENT是一个定义的object常量
 private static final Object PRESENT = new Object();
public boolean add(E e) {
	return map.put(e, PRESENT)==null;
    }

遍历:拿到Iterator,然后通过.next方法。
  public Iterator<E> iterator() {
	return map.keySet().iterator();
    }


总结:不是线程安全的,不能有重复的值。查找效率比一般的链表快。插入效率高。

你可能感兴趣的:(HashSet源码分析)