`

LinkedHashSet 源码分析

阅读更多
LinkedHashSet 通过继承hashSet();然后调用hashmap的构造函数,用LinkedHashMap来存储数据
    HashSet(int initialCapacity, float loadFactor, boolean dummy) {
	     map = new LinkedHashMap<E,Object>(initialCapacity, loadFactor);
    }

下面是LinkedHashSet的源代码
public class LinkedHashSet<E>
    extends HashSet<E>
    implements Set<E>, Cloneable, java.io.Serializable {

    private static final long serialVersionUID = -2851667679971038690L;

    /**
     * Constructs a new, empty linked hash set with the specified initial
     * capacity and load factor.
     *
     * @param      initialCapacity the initial capacity of the linked hash set
     * @param      loadFactor      the load factor of the linked hash set
     * @throws     IllegalArgumentException  if the initial capacity is less
     *               than zero, or if the load factor is nonpositive
     */
    public LinkedHashSet(int initialCapacity, float loadFactor) {
        super(initialCapacity, loadFactor, true);
    }

    /**
     * Constructs a new, empty linked hash set with the specified initial
     * capacity and the default load factor (0.75).
     *
     * @param   initialCapacity   the initial capacity of the LinkedHashSet
     * @throws  IllegalArgumentException if the initial capacity is less
     *              than zero
     */
    public LinkedHashSet(int initialCapacity) {
        super(initialCapacity, .75f, true);
    }

    /**
     * Constructs a new, empty linked hash set with the default initial
     * capacity (16) and load factor (0.75).
     */
    public LinkedHashSet() {
        super(16, .75f, true);
    }

    /**
     * Constructs a new linked hash set with the same elements as the
     * specified collection.  The linked hash set is created with an initial
     * capacity sufficient to hold the elements in the specified collection
     * and the default load factor (0.75).
     *
     * @param c  the collection whose elements are to be placed into
     *           this set
     * @throws NullPointerException if the specified collection is null
     */
    public LinkedHashSet(Collection<? extends E> c) {
        super(Math.max(2*c.size(), 11), .75f, true);
        addAll(c);
    }
}
分享到:
评论

相关推荐

    集合框架源码分析

    2. **源码分析:ArrayList** `ArrayList`是基于动态数组实现的列表,其内部维护了一个Object类型的数组。当我们添加元素时,如果数组已满,会自动扩容。扩容策略通常是将容量扩大到原来的1.5倍,这在源码中可以通过...

    Java源码分析:集合-容器.pdf

    首先,Set集合是一个不允许重复元素的集合,它有多种实现方式,其中包括HashSet、TreeSet和LinkedHashSet。HashSet是基于HashMap实现的,其元素存储在HashMap的key上,而value使用一个静态的默认对象。为了保证元素...

    常见的java集合源码分析,以及面试题

    本文将深入剖析Java集合的源码,探讨其内部实现机制,并结合常见面试题,帮助你更好地理解和应用这些知识。 首先,我们从基础开始,Java集合框架主要分为两大类:List(列表)和Set(集合)。List接口包括ArrayList...

    java8集合源码分析-LearningNotes:Java笔记

    源码分析:ArrayList、Vector、LinkedList、HashMap、ConcurrentHashMap、HashSet、LinkedHashSet and LinkedHashMap 线程状态、线程机制、线程通信、J.U.C 组件、JMM、线程安全、锁优化 磁盘操作、字节操作、字符...

    java8集合源码分析-CollectionDemo:自己复习集合框架时候的例子

    集合源码分析 java基础复习 [TOC] 一、集合 1.Iterator 2.Collection 2.1 List---&gt;有序、有索引、元素可重复 1.ArrayList: 底层是数组结构、查询快、增删慢、不同步 添加第一个元素的时候,创建默认个数是10个,...

    Collections源码java-JCF-CodeAnalysis:Javacollectionsframework源码分析

    总的来说,Java集合框架源码分析可以帮助我们掌握集合操作的底层原理,提高代码性能,增强对并发编程的理解,并且有助于我们设计出更高效、更安全的Java程序。通过对Collections类的深入学习,我们可以更好地利用...

    java8集合源码分析-blog:博客

    这次我们将深入探讨Java 8在集合框架上引入的新特性和源码分析。 首先,Java 8对集合框架进行了一些重大的改进,其中最引人注目的就是引入了流(Stream)API。流API允许程序员以声明式的方式处理数据,它支持串行和...

    java.util.Collection源码分析与深度理解

    7. LinkedHashSet是HashSet的一个变种,它保持了元素插入时的顺序,同时具备HashSet的特性。 总结来说,选择ArrayList还是LinkedList,主要取决于应用场景的需求。如果需要快速的随机访问和有序性,ArrayList通常是...

    javabitset源码-JerrySoundCode:杰瑞声码

    bitset源码Java源码分析 基础集合列表 ArrayList (done) Vector (done) LinkedList (done) Stack (done) ReferenceQueue (done) ArrayDeque (done) Set HashSet (done) TreeSet (done) LinkedHashSet (done) BitSet ...

    JavaSE专题-Set集合.doc

    通过源码分析,我们可以发现HashSet是通过hashcode和equals来保证元素的唯一性的。hashcode方法用于确定元素的存储位置,而equals方法用于比较元素的相等性。 在使用HashSet时,需要注意的是,需要重写hashcode和...

    Java杂集

    总之,Java杂集是一个全面探讨Java集合框架、工具使用和源码分析的主题,无论你是初学者还是经验丰富的开发者,都能从中找到有价值的信息,提升自己的编程技巧和解决问题的能力。通过深入学习和实践,可以更好地应对...

    对java基础集合部分(List、HashMap、HashSet、ArrayList等)底层源码的分析与总结

    Java集合框架是Java编程中非常重要的部分,它提供了一种高效、灵活的数据组织方式。本文主要探讨了几个关键...通过对源码的深入分析,我们可以更好地掌握Java集合框架的工作原理,并根据实际需求选择最适合的数据结构。

    飞秋java源码-interviewNote:面试笔记

    源码分析:ArrayList、Vector、LinkedList、HashMap、ConcurrentHashMap、HashSet、LinkedHashSet and LinkedHashMap Java 并发编程  &gt; ​ 线程机制、线程通信、J.U.C组件、JMM、线程安全、锁优化 Java I/O  磁盘...

    Java Collections 技术研讨会资料+(带源码)

    源码分析是提高编程技能的重要途径。通过阅读和调试这些代码,你可以更深入地理解Collections框架的工作原理,以及如何根据实际需求选择合适的集合类型。例如,当需要高效查找时,选择HashMap;如果需要保持元素顺序...

    java源码api-java_base_learning:java基础学习。主要包括源码学习以及api样例

    源码分析有助于我们更好地理解异常的抛出和捕获过程。 6. **反射**:Java.lang.reflect包中的类,如Class、Method、Constructor,提供了运行时访问类和对象的能力。通过源码,我们可以看到如何动态地创建对象、调用...

    某果学院springboot 源码解析

    ### Spring Boot源码解析 #### 一、SpringApplication实例化及run方法解析 SpringApplication 类是 Spring Boot 的入口类,负责整个应用的启动过程。它实现了 `ApplicationRunner` 和 `CommandLineRunner` 接口,...

    Java 容器.pdf_电子版pdf版

    源码分析 ArrayList 是一个基于动态数组实现的 List 实现类。它实现了 RandomAccess 接口,因此支持随机访问。ArrayList 的默认大小为 10,添加元素时使用 ensureCapacityInternal() 方法来保证容量足够,如果不够...

    Java 集合与数据结构详解1

    HashMap的源码分析是一个深入的话题,它涉及到位运算、哈希函数、扩容策略和树化过程等。在高并发场景下,了解HashMap的工作原理有助于优化代码性能。 总的来说,Java集合框架和数据结构是Java程序员必须掌握的基础...

    Java基础学习25.pdf

    ### HashSet源码分析 1. **构造器**:HashSet提供了多个构造器,可以创建默认容量的HashSet,指定容量和负载因子的HashSet,或者带有一个初始集合的HashSet。 2. **add(E e)**:向HashSet添加元素时,实际上是将...

    java集合框架

    7. **源码分析**: 分析这些集合类的源码有助于理解它们的工作原理,例如`HashMap`的扩容机制,`LinkedList`的插入删除效率,`TreeSet`的红黑树平衡等。 8. **性能比较与选择**: 学习如何根据应用场景选择合适的...

Global site tag (gtag.js) - Google Analytics