`

HashSet源码分析

阅读更多
存储结构: 通过hashmap来存储的  
private transient HashMap<E,Object> map;

构造方法:
 public HashSet(int initialCapacity, float loadFactor) {
	map = new HashMap<E,Object>(initialCapacity, loadFactor);
    }

Add方法:其中PRESENT是一个定义的object常量
 private static final Object PRESENT = new Object();
public boolean add(E e) {
	return map.put(e, PRESENT)==null;
    }

遍历:拿到Iterator,然后通过.next方法。
  public Iterator<E> iterator() {
	return map.keySet().iterator();
    }


总结:不是线程安全的,不能有重复的值。查找效率比一般的链表快。插入效率高。
分享到:
评论

相关推荐

    hashset源码

    源码分析见我博文:http://blog.csdn.net/wabiaozia/article/details/50684556

    【死磕Java集合】-集合源码分析.pdf

    六、HashSet源码分析 HashSet是一种基于散列表实现的Set,提供了快速的元素存储和检索能力。HashSet的继承体系中,它继承了AbstractSet,实现了Set接口。 HashSet的主要属性包括元素数组elementData、元素个数size...

    Android中高级面试必知必会.pdf

    ArrayList .....25 3.LinkedList.........30 4.Hashset 源码分析........35 5. 内存模型.......47 6. 垃圾回收算法(JVM)..........63 7、垃圾回收机制和调用 System.gc()的区别? .64 8. 类加载过程90 9. 反射......

    Java基础学习25.pdf

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

    Android+上百实例源码分析以及开源分析+集合打包3

    在Android开发领域,深入理解和应用源码分析以及开源库的运用是提升技能的关键步骤。"Android+上百实例源码分析以及开源分析+集合打包3"这个资源提供了丰富的学习材料,涵盖了多个方面,旨在帮助开发者更好地理解和...

    Java源码分析Iterable.pdf

    Java源码分析Iterable Java源码分析Iterable是Java编程语言中一个基础组件的源码分析,Iterable是一个接口,它允许对象被迭代,例如foreach循环中的数组或集合。了解Iterable的源码,可以帮助开发者更好地理解Java...

    Java面试题 从源码角度分析HashSet实现原理

    通过源码分析, HashSet的实现原理可以分为以下几个方面: 1. HashSet的构造函数:HashSet的构造函数中,会创建一个HashMap对象,用于存储集合元素。`public HashSet() { map = new HashMap();}` 2. HashSet的add...

    集合框架源码分析

    5. **源码分析:HashSet** `HashSet`是基于`HashMap`实现的,它不存储键值对,而是将每个元素作为键,其值总是`null`。这使得`HashSet`可以快速地检查元素是否存在,因为这等同于检查键是否在`HashMap`中。 6. **...

    集合的概念及应用和HashSet保证数据不重复的原理

    同时,源码分析也能帮助我们理解HashMap的扩容机制,以及为什么即使两个对象的hashCode相同,它们仍然可以在HashSet中区分(因为equals()方法的正确实现)。 工具在学习和使用集合框架时也扮演着重要角色。例如,...

    java集合类源码分析之Set详解.docx

    以下是对HashSet关键方法的源码分析: 1. 构造器: - `HashSet()`:创建一个空的HashSet,其内部的HashMap默认容量为16。 - `HashSet(Collection&lt;? extends E&gt; c)`:根据传入的集合c初始化HashSet,HashMap的容量...

    Java中的HashSet详解和使用示例_动力节点Java学院整理

    在HashSet的源码分析中,可以看到HashSet是通过map(HashMap对象)保存内容的。HashSet中的map变量是transient的,也就是说,HashSet对象在序列化时,不会将map对象序列化。HashSet中还定义了一个静态final变量PRESENT...

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

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

    c# HashSet的扩容机制需要注意的

    HashSet 的扩容机制主要通过两个方面来实现:一是查看 HashSet 底层源码,二是了解 HashSet 的扩容机制。 1. 查看 HashSet 底层源码 要了解 HashSet 的扩容机制,我们需要查看 HashSet 的源码。HashSet 的源码中有...

    java集合类源码分析之Set详解

    Java集合类源码分析之Set详解 Java集合类中的Set Interface是用于存储无序、不可重复元素的集合接口。Set Interface继承自Collection Interface,提供了基本的集合操作,如add、remove、contains等。Set Interface...

    Android_上百实例源码分析以及开源分析_集合打包1

    这个压缩包"Android_上百实例源码分析以及开源分析_集合打包1"显然包含了丰富的Android应用开发实例和源码解析,旨在帮助开发者深入理解Android系统的工作原理,提高代码调试和优化能力。下面将详细探讨其中可能涵盖...

    Java rt.jar 源码分析

    源码分析对于深入理解Java平台的工作原理、优化代码性能以及进行二次开发具有重要的价值。 rt.jar中的源码虽然默认并未提供,但可以通过一些工具,如JDK的`src.zip`或者使用OpenJDK的源码仓库来获取。这些源码提供...

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

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

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

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

    hadoop源码分析

    Hadoop,作为大数据处理领域的重要框架,其源码分析对于开发者来说具有极高的价值。本文将深入探讨Hadoop的核心组件,包括Configuration、JobClient、JobConf以及JobTracker、TaskTracker等,并详细解析Hadoop作业...

Global site tag (gtag.js) - Google Analytics