探索LinkedHashSet底層實現
阿新 • • 發佈:2020-12-21
前言
額... 底層實現了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