1.4.1 底层封装 HashMap
private transient HashMap<E,Object> map;
// 全局静态虚拟占位对象,所有value统一使用,节省内存
private static final Object PRESENT = new Object();
文字解释:HashSet 只存 key,value 统一使用静态 Object,无需重复创建对象。
1.4.2 核心方法注释
// 添加元素,map.put返回null代表无重复,添加成功
public boolean add(E e) {
return map.put(e, PRESENT) == null;
}
// 判断元素是否存在,调用map的containsKey
public boolean contains(Object o) {
return map.containsKey(o);
}
// 删除元素,判断返回值是否为占位对象
public boolean remove(Object o) {
return map.remove(o) == PRESENT;
}
1.4.3 核心特性
- 无序:HashMap key 无序;
- 仅允许 1 个 null 元素;
- 无 get (int),无下标概念;
- 非线程安全。