千家信息网

JDK的Set源码分析

发表于:2026-11-02 作者:千家信息网编辑
千家信息网最后更新 2026年11月02日,这篇文章主要介绍"JDK的Set源码分析"的相关知识,小编通过实际案例向大家展示操作过程,操作方法简单快捷,实用性强,希望这篇"JDK的Set源码分析"文章能帮助大家解决问题。首先,我们看一下Hash
千家信息网最后更新 2026年11月02日JDK的Set源码分析

这篇文章主要介绍"JDK的Set源码分析"的相关知识,小编通过实际案例向大家展示操作过程,操作方法简单快捷,实用性强,希望这篇"JDK的Set源码分析"文章能帮助大家解决问题。

首先,我们看一下HashSet

  1. private transient HashMap map;


  2. // Dummy value to associate with an Object in the backing Map

  3. private static final Object PRESENT = new Object();

可见,他适配了HashMap,那么他的功能是如何委托给HashMap结构的呢?

  1. public boolean add(E e) {

  2. return map.put(e, PRESENT)==null;

  3. }

在hashMap中,我们大多数时候是用value,但是在set的时候,却很好的利用了已有类HashMap,他利用了HashMap的key的唯一性来保证存储在Set中的元素的唯一性;

private static final Object PRESENT = new Object();

是这个HashMap所有key的value,他只是一个形式,而我们真正的数据是存在在key中的资源;

我们最后拿到的迭代器也是:

  1. public Iterator iterator() {

  2. return map.keySet().iterator();

  3. }


map的keySet的迭代器;

同理,我们看看LinkedhashMap;

  1. public LinkedHashSet(int initialCapacity, float loadFactor) {

  2. super(initialCapacity, loadFactor, true);

  3. }


  4. /**

  5. * Constructs a new, empty linked hash set with the specified initial

  6. * capacity and the default load factor (0.75).

  7. *

  8. * @param initialCapacity the initial capacity of the LinkedHashSet

  9. * @throws IllegalArgumentException if the initial capacity is less

  10. * than zero

  11. */

  12. public LinkedHashSet(int initialCapacity) {

  13. super(initialCapacity, .75f, true);

  14. }


  15. /**

  16. * Constructs a new, empty linked hash set with the default initial

  17. * capacity (16) and load factor (0.75).

  18. */

  19. public LinkedHashSet() {

  20. super(16, .75f, true);

  21. }

调用了父类的构造函数;构造函数如下:

  1. HashSet(int initialCapacity, float loadFactor, boolean dummy) {

  2. map = new LinkedHashMap(initialCapacity, loadFactor);

  3. }

生出了LinkedHashMap;

同理,我们一样可见到treeMap的实现:

  1. private transient NavigableMap m;


  2. // Dummy value to associate with an Object in the backing Map

  3. private static final Object PRESENT = new Object();

关于"JDK的Set源码分析"的内容就介绍到这里了,感谢大家的阅读。如果想了解更多行业相关的知识,可以关注行业资讯频道,小编每天都会为大家更新不同的知识点。

源码 分析 知识 函数 唯一性 时候 行业 迭代 不同 实用 元素 内容 功能 只是 实用性 实际 形式 数据 文章 方法 数据库的安全要保护哪些东西 数据库安全各自的含义是什么 生产安全数据库录入 数据库的安全性及管理 数据库安全策略包含哪些 海淀数据库安全审计系统 建立农村房屋安全信息数据库 易用的数据库客户端支持安全管理 连接数据库失败ssl安全错误 数据库的锁怎样保障安全 互联网科技工作委员会 中关村互联网 科技集团 为想互联网科技怎么样 高科技与互联网 壕鑫互联网络科技 互联网金融 科技创新 狮子座互联网科技培训 长亮科技 互联网金融 互联网科技视频素材 中国的互联网科技企业的崛起 互联网科技产业特征 互联网媒体平台算高科技产业 工业互联网山东科技大学 山东有哪些互联网科技公司 中国互联网有什么科技 下一代互联网重大应用科技园 广东鹅鹅鹅互联网科技有限公司 普陀区互联网教育科技管理办法 互联网的黑科技实验室 中国主要互联网科技公司 互联网扶贫科技 互联网公司 科技公司 互联网科技公司怎么样 隆华科技工业互联网 温州喔噻互联网科技有限公司 厦门千工互联网科技有限公司 燊美集互联网科技有限公司 互联网方面的科技前沿 雨阳互联网卡科技有限公司 杭州融税互联网科技有限公司
0