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++ 连接mysql数据库
    c语言数据结构分析2之 链表插入删除
    c语言数据结构分析1之 链表创建
    微软 翻译工具
    c语言数据结构分析7之 二分查找
    sencha touch2 demo
    程序员装B指南
    c语言数据结构分析6之 快速排序
    c语言数据结构分析5之 冒泡
    对话jQuery之父John Resig:JavaScript的开发之路
  • 原文地址:https://www.cnblogs.com/IdealSpring/p/11871182.html
Copyright © 2011-2022 走看看