探索LinkedHashSet底层实现
前言
额... 底层实现了LinkedHashMap,它的数据结构是数组 + 链表 + 红黑树,内部通过一条链表来维护有序性,按照插入顺序进行排列。代码只有100行...
数据结构
public class LinkedHashSet<E> extends HashSet<E> implements Set<E>, Cloneable, java.io.Serializable {
/**
* 指定初始容量与加载因子来初始化
* @param initialCapacity 指定初始容量
* @param loadFactor 指定加载因子
*/
public LinkedHashSet(int initialCapacity, float loadFactor) {
super(initialCapacity, loadFactor, true);
}
/**
* 指定初始容量来初始化
* @param initialCapacity 指定初始容量
*/
public LinkedHashSet(int initialCapacity) {
super(initialCapacity, .75f, true);
}
/**
* 初始化
*/
public LinkedHashSet() {
super(16, .75f, true);
}
/**
* 指定集合来初始化
* @param c 指定集合
*/
public LinkedHashSet(Collection<? extends E> c) {
super(Math.max(2*c.size(), 11), .75f, true);
addAll(c);
}
}
总结
-
LinkedHashSet底层基于LinkedHashMap。
-
LinkedHashSet有序、不可重复、非线程安全。
-
LinkedHashSet允许空元素。
重点关注
基于LinkedHashMap
浙公网安备 33010602011771号