HashSet底层采用了HashMap实现的,所有放入HashSet中的集合元素实际上由HashMap的key来保存,而HashMap的value则存储一个PERSENT,它是一个静态的Object对象。
- public class HashSet<E>
- extends AbstractSet<E>
- implements Set<E>, Cloneable, java.io.Serializable
- {
- // 使用 HashMap 的 key 保存 HashSet 中所有元素
- private transient HashMap<E,Object> map;
- // 定义一个虚拟的 Object 对象作为 HashMap 的 value
- private static final Object PRESENT = new Object();
- ...
- // 初始化 HashSet,底层会初始化一个 HashMap
- public HashSet()
- {
- map = new HashMap<E,Object>();
- }