IT人生

  • 首页
  • 归档
  • kafka
  • Java
  • Spring
  • Golang
  • SQL
  • Spark
  • ElasticSearch
  • 关于

  • 搜索
Phoenix HBase Kudu ElasticSearch Spring 数据结构 操作系统 Kettle Azkaban Sqoop Hive Yarn Redis Mybatis Impala Cloudera 大数据 HDFS mycat shell Linux 架构 并发 mysql sql golang java 工具 spark kafka 人生

JDK源码分析-HashSet

发表于 2017-01-24 | 分类于 java | 0 | 阅读次数 184

系列文章:

  1. JDK源码分析-transient关键字
  2. JDK源码分析-transient关键字
  3. JDK源码分析-String
  4. JDK源码分析-AbstractStringBuilder
  5. JDK源码分析-StringBuffer和StringBuilder
  6. JDK源码分析-RandomAccess
  7. JDK源码分析-ArrayList
  8. JDK源码分析-LinkedList
  9. JDK源码分析-HashMap
  10. JDK源码分析-HashSet
  11. JDK源码分析-LinkedHashMap
  12. JDK源码分析-ConcurrentHashMap

类申明

HashSet这个类实现了Set集合,实际为一个HashMap的实例。对集合的迭代次序没有任何保证; 特别是,它不能保证订单会随着时间的推移保持不变。这个类允许null 元素。

public class HashSet<E>
    extends AbstractSet<E>
    implements Set<E>, Cloneable, java.io.Serializable

image.png

构造函数

HashSet提供了4个public构造函数和一个protected(第5个)

  1. HashSet()
  2. HashSet(Collection<? extends E> c)
  3. HashSet(int initialCapacity, float loadFactor)
  4. HashSet(int initialCapacity)
  5. HashSet(int initialCapacity, float loadFactor, boolean dummy) 其中默认的构造函数代码如下:
    public HashSet() {
        map = new HashMap<>();
    }

也就是,HashSet底层是基于HashMap存储的,所有其他对于HashSet的操作,本质上是基于HashSet所持有的HashMap的操作,

private transient HashMap<E,Object> map;

其中HashSet的值对应map的Key,而map中所存储Key对应的Value是new Object() 也就是定下的:

private static final Object PRESENT = new Object();
  • 本文作者: Randy
  • 本文链接: http://www.itrensheng.com/archives/HashSet
  • 版权声明: 本博客所有文章除特别声明外,均采用CC BY-NC-SA 3.0 许可协议。转载请注明出处!
# Phoenix # HBase # Kudu # ElasticSearch # Spring # 数据结构 # 操作系统 # Kettle # Azkaban # Sqoop # Hive # Yarn # Redis # Mybatis # Impala # Cloudera # 大数据 # HDFS # mycat # shell # Linux # 架构 # 并发 # mysql # sql # golang # java # 工具 # spark # kafka # 人生
JDK源码分析-HashMap
JDK源码分析-LinkedHashMap
  • 文章目录
  • 站点概览
Randy

Randy

技术可以暂时落后,但任何时候都要有上进的信念

80 日志
27 分类
31 标签
RSS
Github E-mail
Creative Commons
© 2021 备案号:沪ICP备19020689号-1
Randy的个人网站