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

posted @ 2020-12-21 21:44  zliawk  阅读(352)  评论(0)    收藏  举报