zoukankan      html  css  js  c++  java
  • Collection容器家族(LinkedHashSet源码详解)

    一、在Collection集合体系中的位置及概述

            LinkedHashSet 是非同步的有序的,分别是插入顺序和访问顺序,LinkedHashSet的有序性可参考LinkedHashMap的有序性,继承于HashSet,内部基于LinkedHashMap实现的,也就是说LinkedHashSet和HashSet一样只存储一个值,LinkedHashSet和LinkedHashMap一样维护着一个运行于所有条目的双向链表。

    二、构造方法

        /**
         * 构造一个带有指定初始容量和加载因子的新空链接哈希set。
         *
         * 底层会调用父类的构造方法,构造一个有指定初始容量和加载因子的LinkedHashMap实例。
         * @param initialCapacity 初始容量。
         * @param loadFactor 加载因子。
         */
        public LinkedHashSet(int initialCapacity, float loadFactor) {
            super(initialCapacity, loadFactor, true);
        }
    
        public LinkedHashSet(int initialCapacity) {
            super(initialCapacity, .75f, true);
        }
    
         /**
         * 构造一个带默认初始容量16和加载因子0.75的新空链接哈希set。
         *
         * 底层会调用父类的构造方法,构造一个带默认初始容量16和加载因子0.75的LinkedHashMap实例。
         */
        public LinkedHashSet() {
            super(16, .75f, true);
        }
    
        /**
         * 构造一个与指定collection中的元素相同的新链接哈希set。
         *
         * 底层会调用父类的构造方法,构造一个足以包含指定collection
         * 中所有元素的初始容量和加载因子为0.75的LinkedHashMap实例。
         * @param c 其中的元素将存放在此set中的collection。
         */
        public LinkedHashSet(Collection<? extends E> c) {
            super(Math.max(2*c.size(), 11), .75f, true);
            addAll(c);
        }

     三、总结

            LinkedHashSet底层使用LinkedHashMap来保存所有元素,它继承于HashSet,其所有的方法操作上又与HashSet相同,因此LinkedHashSet的实现上非常简单,只提供了四个构造方法,并通过传递一个标识参数,调用父类的构造器,底层构造一个LinkedHashMap来实现,在相关操作上与父类HashSet的操作相同,直接调用父类HashSet的方法即可。 

  • 相关阅读:
    手搓一个兔子问题(分享一个C语言问题,持续更新...)
    一个C语言萌新的学习之旅(持续更新中...)
    ...续上文(一个小萌新的C语言之旅)
    手搓一个C语言简单计算器。
    嘿,C语言(持续更新中...)
    一个博客萌新的博客之旅。。。。
    vue+uikit3+laravel快速建站
    mpvue开发博客园小程序
    C语言俄罗斯方块小游戏练习
    c语言贪吃蛇小游戏练习
  • 原文地址:https://www.cnblogs.com/IdealSpring/p/11871182.html
Copyright © 2011-2022 走看看