【1.JDK底层源码剖析】3.1HashSet底层实现和去重原理剖析
HashSet底层实现与去重原理剖析(基于Java 17源码)
一、核心实现机制
HashSet的底层完全由HashMap实例支撑,所有操作都委托给HashMap处理:
public class HashSet<E> extends AbstractSet<E> implements Set<E>, Cloneable, java.io.Serializable {
private transient HashMap<E, Object> map; // 核心存储结构
private static final Object PRESENT = new Object(); // 虚拟占位值
// 构造方法:初始化底层HashMap
public HashSet() {
map = new HashMap<>();
}
}
- 元素存储:添加的元素作为HashMap的键(Key)
- 值处理:所有键对应的值都是同一个虚拟对象
PRESENT
二、去重原理详解
1. 添加元素源码分析
public boolean add(E e) {
return map.put(e, PRESENT) == null; // 关键去重逻辑
}
- 执行过程:
- 将元素
e作为键,PRESENT作为
- 将元素

