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倍,这在源码中可以通过...
首先,Set集合是一个不允许重复元素的集合,它有多种实现方式,其中包括HashSet、TreeSet和LinkedHashSet。HashSet是基于HashMap实现的,其元素存储在HashMap的key上,而value使用一个静态的默认对象。为了保证元素...
本文将深入剖析Java集合的源码,探讨其内部实现机制,并结合常见面试题,帮助你更好地理解和应用这些知识。 首先,我们从基础开始,Java集合框架主要分为两大类:List(列表)和Set(集合)。List接口包括ArrayList...
源码分析:ArrayList、Vector、LinkedList、HashMap、ConcurrentHashMap、HashSet、LinkedHashSet and LinkedHashMap 线程状态、线程机制、线程通信、J.U.C 组件、JMM、线程安全、锁优化 磁盘操作、字节操作、字符...
集合源码分析 java基础复习 [TOC] 一、集合 1.Iterator 2.Collection 2.1 List--->有序、有索引、元素可重复 1.ArrayList: 底层是数组结构、查询快、增删慢、不同步 添加第一个元素的时候,创建默认个数是10个,...
总的来说,Java集合框架源码分析可以帮助我们掌握集合操作的底层原理,提高代码性能,增强对并发编程的理解,并且有助于我们设计出更高效、更安全的Java程序。通过对Collections类的深入学习,我们可以更好地利用...
这次我们将深入探讨Java 8在集合框架上引入的新特性和源码分析。 首先,Java 8对集合框架进行了一些重大的改进,其中最引人注目的就是引入了流(Stream)API。流API允许程序员以声明式的方式处理数据,它支持串行和...
7. LinkedHashSet是HashSet的一个变种,它保持了元素插入时的顺序,同时具备HashSet的特性。 总结来说,选择ArrayList还是LinkedList,主要取决于应用场景的需求。如果需要快速的随机访问和有序性,ArrayList通常是...
bitset源码Java源码分析 基础集合列表 ArrayList (done) Vector (done) LinkedList (done) Stack (done) ReferenceQueue (done) ArrayDeque (done) Set HashSet (done) TreeSet (done) LinkedHashSet (done) BitSet ...
通过源码分析,我们可以发现HashSet是通过hashcode和equals来保证元素的唯一性的。hashcode方法用于确定元素的存储位置,而equals方法用于比较元素的相等性。 在使用HashSet时,需要注意的是,需要重写hashcode和...
总之,Java杂集是一个全面探讨Java集合框架、工具使用和源码分析的主题,无论你是初学者还是经验丰富的开发者,都能从中找到有价值的信息,提升自己的编程技巧和解决问题的能力。通过深入学习和实践,可以更好地应对...
Java集合框架是Java编程中非常重要的部分,它提供了一种高效、灵活的数据组织方式。本文主要探讨了几个关键...通过对源码的深入分析,我们可以更好地掌握Java集合框架的工作原理,并根据实际需求选择最适合的数据结构。
源码分析:ArrayList、Vector、LinkedList、HashMap、ConcurrentHashMap、HashSet、LinkedHashSet and LinkedHashMap Java 并发编程 > 线程机制、线程通信、J.U.C组件、JMM、线程安全、锁优化 Java I/O 磁盘...
源码分析是提高编程技能的重要途径。通过阅读和调试这些代码,你可以更深入地理解Collections框架的工作原理,以及如何根据实际需求选择合适的集合类型。例如,当需要高效查找时,选择HashMap;如果需要保持元素顺序...
源码分析有助于我们更好地理解异常的抛出和捕获过程。 6. **反射**:Java.lang.reflect包中的类,如Class、Method、Constructor,提供了运行时访问类和对象的能力。通过源码,我们可以看到如何动态地创建对象、调用...
### Spring Boot源码解析 #### 一、SpringApplication实例化及run方法解析 SpringApplication 类是 Spring Boot 的入口类,负责整个应用的启动过程。它实现了 `ApplicationRunner` 和 `CommandLineRunner` 接口,...
源码分析 ArrayList 是一个基于动态数组实现的 List 实现类。它实现了 RandomAccess 接口,因此支持随机访问。ArrayList 的默认大小为 10,添加元素时使用 ensureCapacityInternal() 方法来保证容量足够,如果不够...
HashMap的源码分析是一个深入的话题,它涉及到位运算、哈希函数、扩容策略和树化过程等。在高并发场景下,了解HashMap的工作原理有助于优化代码性能。 总的来说,Java集合框架和数据结构是Java程序员必须掌握的基础...
### HashSet源码分析 1. **构造器**:HashSet提供了多个构造器,可以创建默认容量的HashSet,指定容量和负载因子的HashSet,或者带有一个初始集合的HashSet。 2. **add(E e)**:向HashSet添加元素时,实际上是将...
7. **源码分析**: 分析这些集合类的源码有助于理解它们的工作原理,例如`HashMap`的扩容机制,`LinkedList`的插入删除效率,`TreeSet`的红黑树平衡等。 8. **性能比较与选择**: 学习如何根据应用场景选择合适的...