一、概述

HashSet 底层使用哈希表,实际上是一个HashMap实例。

HashSet 排列是无序的,元素不可重复。

HashSet 元素值存放在 HashMap 的 key 上,value 为默认的 Object 。

二、代码分析

2.1、底层存储定义

image.png

  • HashSet 底层使用 HashMap 进行存储
  • 元素存储在 HashMap 中的 key 上,value 为默认的 Object 对象

    2.2、构造函数

    构造函数最终调用的都是 HashMap 实例化构造方法
    image.png
    除了 HashMap ,HashSet 有另外一种实现,使用 LinkedHashMap ,如下:
    image.png
    通过 LinkedHashMap 来保证 有序性,不过该构造是私有的,所以 HashSet 默认是无序的,该方法由其子类 LinkedHashSet 调用。《LinkedHashSet》

    2.3、添加方法

    image.png

    2.4、其他

    其他方法都是依赖于 HashMap 来完成(参考源代码)