1. 程式人生 > 實用技巧 >探索LinkedHashSet底層實現

探索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