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的方法即可。 

  • 相关阅读:
    .net编程扫盲(*)
    接口编程扫盲(多态)
    (转)栈与堆栈的区别
    (转).NET基础拾遗(5)多线程开发基础
    (转)你应该知道的计算机网络知识
    网络代理的基础知识
    某代理网站免费IP地址抓取测试
    常用Maven插件介绍
    Maven打jar发布包的常用配置
    Apache Commons CLI 开发命令行工具示例
  • 原文地址:https://www.cnblogs.com/IdealSpring/p/11871182.html
Copyright © 2011-2022 走看看