
10.HashSet底层实现原理
10.1HashSet特点
- 存储对象:HashSet 存储对象采用哈希表的方式,它不允许重复元素,即集合中不会包含相同的元素。当向 HashSet 中添加元素时,会根据元素的 hashCode() 方法和 equals() 方法来判断元素是否重复。
- 底层数据结构:HashSet 的底层数据结构是基于 HashMap 实现的,实际上 HashSet 的元素就是作为 HashMap 的 key 存储的。
- null 值问题:HashSet 允许存储一个 null 元素。
- 线程安全问题:不安全
10.2HashSet源码
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();
…
public HashSet(){
map = new HashMap<E,Object>();
}
public HashSet(int initialCapacity, float loadFactor){
map = new HashMap<E