文本主要介绍HashSet的数据结构和关键方法
基本介绍
HashSet 是 Java 中的一个集合类,它实现了 Set 接口,并且使用哈希表HashMap作为其底层数据结构。
因此具有快速的插入、查找和删除操作的特点。
HashSet 的特点如下:
- 唯一性:HashSet 中的元素是唯一的,不允许重复元素。当试图向 HashSet 中添加重复元素时,操作将被忽略。
- 无序性:HashSet 中的元素没有固定的顺序,元素的存储顺序可能与插入顺序不同。
- 允许空元素:HashSet 允许存储空元素(null)。
数据结构
使用HashMap作为存储的数据结构,Key为HashSet的元素,Value为一个空对象
private transient HashMap<E,Object> map;
private static final Object PRESENT = new Object();
public HashSet() {
map = new HashMap<>();
}
public HashSet(Collection<? extends E> c) {
map = new HashMap<>(Math.max((int) (c.size()/.75f) + 1, 16));
addAll(c);
}
public HashSet(int initialCapacity, float loadFactor) {
map = new HashMap<>(initialCapacity, loadFactor);
}
public HashSet(int initialCapacity) {
map = new HashMap<>(initialCapacity);
}
核心方法
其中关键实现方法都是利用HashMap能力
public boolean add(E e) {
return map.put(e, PRESENT)==null;
}
public boolean remove(Object o) {
return map.remove(o)==PRESENT;
}
public void clear() {
map.clear();
}
public boolean contains(Object o) {
return map.containsKey(o);
}
public boolean isEmpty() {
return map.isEmpty();
}
其实现不叫简答,不再赘述