源码分析--HashSet(JDK1.8)
HashSet为无序不可重复集合。底层几乎全部借助HashMap实现,比较简单。本篇简要分析一下HashSet源码。
首先是成员变量:
1、真正保存数据的HashMap实例
private transient HashMap<E,Object> map;
2、map实例的值
private static final Object PRESENT = new Object();
常用方法:
1、add()
public boolean add(E e) { return map.put(e, PRESENT)==null; }
从这个HashSet的add()方法中,可以看出。HashSet的不可重复,主要就是利用Map相同键会进行值覆盖的特性完成的。
2、迭代方法
public Iterator<E> iterator() { return map.keySet().iterator(); }
直接就是返回Map键的迭代器。