HashSet底层是HashMap实现的,关于HashMap的分析请移步到HashMap源码分析
属性
private transient HashMap<E,Object> map;
private static final Object PRESENT = new Object();
构造方法
public HashSet() {
//底层会初始化一个空的HashMap,并使用默认初始容量为16和加载因子0.75。
map = new HashMap<>();
}
public HashSet(Collection<? extends E> c) {
map = new HashMap<>(Math.max((int) (c.size()/.75f) + 1, 16));
addAll(c);
}
public HashSet(int initialCapacity, float loadFactor) {
map = new HashMap<>(initialCapacity, loadFactor);
}
public HashSet(int initialCapacity) {
map = new HashMap<>(initialCapacity);
}
HashSet(int initialCapacity, float loadFactor, boolean dummy) {
map = new LinkedHashMap<>(initialCapacity, loadFactor);
}
初始化HashSet时,可以指定初始化容量和负载因子。因为HashSet是由HashMap来实现,如果不指定,则默认值都与HashMap中的一样,即默认初始化容量为16,默认负载因子为0.75。
分享到:
相关推荐
源码分析见我博文:http://blog.csdn.net/wabiaozia/article/details/50684556
六、HashSet源码分析 HashSet是一种基于散列表实现的Set,提供了快速的元素存储和检索能力。HashSet的继承体系中,它继承了AbstractSet,实现了Set接口。 HashSet的主要属性包括元素数组elementData、元素个数size...
ArrayList .....25 3.LinkedList.........30 4.Hashset 源码分析........35 5. 内存模型.......47 6. 垃圾回收算法(JVM)..........63 7、垃圾回收机制和调用 System.gc()的区别? .64 8. 类加载过程90 9. 反射......
### HashSet源码分析 1. **构造器**:HashSet提供了多个构造器,可以创建默认容量的HashSet,指定容量和负载因子的HashSet,或者带有一个初始集合的HashSet。 2. **add(E e)**:向HashSet添加元素时,实际上是将...
在Android开发领域,深入理解和应用源码分析以及开源库的运用是提升技能的关键步骤。"Android+上百实例源码分析以及开源分析+集合打包3"这个资源提供了丰富的学习材料,涵盖了多个方面,旨在帮助开发者更好地理解和...
Java源码分析Iterable Java源码分析Iterable是Java编程语言中一个基础组件的源码分析,Iterable是一个接口,它允许对象被迭代,例如foreach循环中的数组或集合。了解Iterable的源码,可以帮助开发者更好地理解Java...
通过源码分析, HashSet的实现原理可以分为以下几个方面: 1. HashSet的构造函数:HashSet的构造函数中,会创建一个HashMap对象,用于存储集合元素。`public HashSet() { map = new HashMap();}` 2. HashSet的add...
5. **源码分析:HashSet** `HashSet`是基于`HashMap`实现的,它不存储键值对,而是将每个元素作为键,其值总是`null`。这使得`HashSet`可以快速地检查元素是否存在,因为这等同于检查键是否在`HashMap`中。 6. **...
同时,源码分析也能帮助我们理解HashMap的扩容机制,以及为什么即使两个对象的hashCode相同,它们仍然可以在HashSet中区分(因为equals()方法的正确实现)。 工具在学习和使用集合框架时也扮演着重要角色。例如,...
以下是对HashSet关键方法的源码分析: 1. 构造器: - `HashSet()`:创建一个空的HashSet,其内部的HashMap默认容量为16。 - `HashSet(Collection<? extends E> c)`:根据传入的集合c初始化HashSet,HashMap的容量...
在HashSet的源码分析中,可以看到HashSet是通过map(HashMap对象)保存内容的。HashSet中的map变量是transient的,也就是说,HashSet对象在序列化时,不会将map对象序列化。HashSet中还定义了一个静态final变量PRESENT...
Java集合框架是Java编程中非常重要的部分,它提供了一种高效、灵活的数据组织方式。本文主要探讨了几个关键...通过对源码的深入分析,我们可以更好地掌握Java集合框架的工作原理,并根据实际需求选择最适合的数据结构。
HashSet 的扩容机制主要通过两个方面来实现:一是查看 HashSet 底层源码,二是了解 HashSet 的扩容机制。 1. 查看 HashSet 底层源码 要了解 HashSet 的扩容机制,我们需要查看 HashSet 的源码。HashSet 的源码中有...
Java集合类源码分析之Set详解 Java集合类中的Set Interface是用于存储无序、不可重复元素的集合接口。Set Interface继承自Collection Interface,提供了基本的集合操作,如add、remove、contains等。Set Interface...
这个压缩包"Android_上百实例源码分析以及开源分析_集合打包1"显然包含了丰富的Android应用开发实例和源码解析,旨在帮助开发者深入理解Android系统的工作原理,提高代码调试和优化能力。下面将详细探讨其中可能涵盖...
源码分析对于深入理解Java平台的工作原理、优化代码性能以及进行二次开发具有重要的价值。 rt.jar中的源码虽然默认并未提供,但可以通过一些工具,如JDK的`src.zip`或者使用OpenJDK的源码仓库来获取。这些源码提供...
首先,Set集合是一个不允许重复元素的集合,它有多种实现方式,其中包括HashSet、TreeSet和LinkedHashSet。HashSet是基于HashMap实现的,其元素存储在HashMap的key上,而value使用一个静态的默认对象。为了保证元素...
本文将深入剖析Java集合的源码,探讨其内部实现机制,并结合常见面试题,帮助你更好地理解和应用这些知识。 首先,我们从基础开始,Java集合框架主要分为两大类:List(列表)和Set(集合)。List接口包括ArrayList...
Hadoop,作为大数据处理领域的重要框架,其源码分析对于开发者来说具有极高的价值。本文将深入探讨Hadoop的核心组件,包括Configuration、JobClient、JobConf以及JobTracker、TaskTracker等,并详细解析Hadoop作业...