`
bmqnc
  • 浏览: 127504 次
  • 性别: Icon_minigender_1
  • 来自: 上海
社区版块
存档分类
最新评论

HashSet源代码分析

    博客分类:
  • java
阅读更多
HashSet里面主要是利用了HashMap的数据结构,我感觉挺简单的。所有的add,size,isEmpty等等都映射到了内置的成员变量map(是个HashMap或者LinkedHashMap)上,如add方法:
public boolean add(E e) {
	return map.put(e, PRESENT)==null;
    }


就是用到了map,不过这里放置的时候每个key的value都是同一个,都是内置的一个Object对象:
 private static final Object PRESENT = new Object();


不过里面有个构造函数比较特别,因为LinkedHashSet继承了HashSet,因此HashSet里面有个构造函数的最后一个参数是boolean类型,这个参数没什么意义,主要是为区分构造产生的是LinkedHashSet还是HashSet,因为这个函数对map产生的是LinkedHashMap。

这种技巧之前还没见过,可以学学。膜拜类库的大牛中。。。。

基本就是这样,这个应该算是util里面最简单的类了。
分享到:
评论

相关推荐

    hashset源码

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

    通过 HashMap、HashSet 的源代码分析其 Hash 存储机制1

    本文将深入分析HashMap和HashSet的哈希存储机制。 首先,HashSet是一个基于哈希表实现的无序不重复元素集合。它通过计算对象的哈希码来决定元素的存储位置,从而确保了快速的查找和插入操作。在HashSet中,元素的...

    源码解析jdk7.0集合:HashSet的底层实现原理.pdf

    HashSet作为Java集合框架中一个重要的非同步集合实现,它在JDK 7.0中的底层实现原理是基于HashMap来存储和操作数据的。下面就详细介绍HashSet的实现原理。 首先,HashSet是Set接口的一个实现类,它用于存储唯一性的...

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

    ### 源码解析(基于JDK 1.6.0_45) 在JDK 1.6版本的HashSet源码中,可以看到一个内部的HashMap实例`map`,以及一个常量`PRESENT`,用来表示HashMap的value。当添加元素时,实际上是将元素作为key,`PRESENT`作为...

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

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

    java编程思想第四版源代码.7z

    4. **集合框架**:Java的集合框架是处理数据的重要工具,源代码可能包含ArrayList、LinkedList、HashMap、HashSet等集合的使用,展示了如何存储和操作数据集。 5. **输入/输出(I/O)**:源代码可能会包含对文件的...

    164个完整的Java程序源代码

    4. **集合框架**:Java集合框架包括ArrayList、LinkedList、HashSet、HashMap等,它们在源代码中会被广泛应用,用于数据的存储和操作。 5. **输入/输出流**:Java的I/O流系统广泛用于文件读写、网络通信等场景,源...

    由HashSet谈重用

    本文将探讨面向对象编程中的重用方式,并通过`HashSet`的源代码来具体分析如何利用`HashMap`实现集合的高效存储。 #### 二、面向对象中的重用 在面向对象编程中,重用可以通过多种方式进行: 1. **继承**:通过...

    数据结构与算法分析(java版内含源代码)

    这本书不仅提供了理论知识,还通过提供源代码实例,帮助读者更好地理解和应用这些概念。 首先,数据结构是存储和组织数据的方式,它是算法设计的基础。在书中,你将学习到基本的数据结构,如数组、链表、栈、队列、...

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

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

    Java源码:比较经典的一些Java源代码,适合于初学者

    Java源码是学习编程语言的重要资源,特别是对于初学者来说,通过阅读和分析源代码,可以深入理解语言的特性和编程技巧。这个压缩包包含了140个经典的Java源代码程序,涵盖了各种基础到进阶的编程概念。下面,我们将...

    JAVA源代码解析JAVA源代码解析

    Java源代码解析是深入理解Java编程语言的关键步骤,它涉及到语法、类库、设计模式以及程序执行流程等多个方面。在Java编程中,源代码是程序员用Java语言编写的文本文件,通常以.java为扩展名。当这些源代码被Java...

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

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

    java核心技术源代码

    源代码分析有助于理解它们的内部实现和性能特性。 3. **异常处理**:Java的异常处理机制通过try-catch-finally语句块确保程序的健壮性。源代码揭示了异常是如何被抛出、捕获和处理的。 4. **多线程**:Java提供了...

    CoreJava 一书的所有配套源代码

    源代码会演示如何操作ArrayList、LinkedList、HashSet、HashMap等,并理解它们之间的区别。 5. **IO流**:学习如何进行文件读写、对象序列化以及使用BufferedReader和PrintWriter等进行字符流处理。 6. **多线程**...

    Java面向对象程序设计课本例题源代码

    下面我们将详细探讨这些源代码所涵盖的知识点,并结合Java的核心特性进行解析。 1. **类与对象**:在Java中,一切皆为对象,而类是创建对象的蓝图。源代码中会展示如何定义类,包括类的属性(成员变量)和行为...

    《Java项目开发实训教程》源代码(每章的案例源代码)详细版

    2. **集合框架**:Java集合框架是编程中必不可少的部分,源代码可能展示了ArrayList、LinkedList、HashMap、HashSet等容器的使用,以及泛型、迭代器和流API的实践。 3. **异常处理**:源代码中可能涉及到try-catch-...

    250个java源代码

    "250个Java源代码"这个压缩包很显然是为了帮助初学者和希望提升Java技能的开发者提供实践素材。这些源代码实例涵盖了Java的基础概念到进阶特性,是学习和理解Java语法、编程技巧以及解决问题的有效工具。 首先,...

Global site tag (gtag.js) - Google Analytics