
集合系列 Set(七):LinkedHashSet
发布日期:2021-05-09 01:08:07
浏览次数:14
分类:博客文章
本文共 1064 字,大约阅读时间需要 3 分钟。
LinkedHashSet 继承了 HashSet,在此基础上维护了元素的插入顺序。
public class LinkedHashSetextends HashSet implements Set , Cloneable, java.io.Serializable
原理
LinkedHashSet 的源码非常简单,只有简单的四4个构造方法。
public LinkedHashSet(int initialCapacity, float loadFactor) { super(initialCapacity, loadFactor, true);} public LinkedHashSet(int initialCapacity) { super(initialCapacity, .75f, true);} public LinkedHashSet() { super(16, .75f, true);} public LinkedHashSet(Collection c) { super(Math.max(2*c.size(), 11), .75f, true); addAll(c);}
但我们不是说 HashSet 还维护了元素的插入顺序么?那这部分代码写在哪里呢?
这里我们要注意一个细节,即 LinkedHashSet 调用的都是 HashSet 的三个参数构造方法,即 HashSet 的这个方法。
HashSet(int initialCapacity, float loadFactor, boolean dummy) { map = new LinkedHashMap<>(initialCapacity, loadFactor);}
从上面的代码我们知道,LinkedHashSet 虽然继承的是 HashSet,但是其却使用 LinkedHashMap 做为实现类。而 LinkedHashMap 则本身维护了元素的插入顺序,这在我们接下来解析 LinkedHashMap 源码的时候会讲到。
总结
LinkedHashSet 是在 HashSet 的基础上,维护了元素的插入顺序。虽然 LinkedHashSet 使用了 HashSet 的实现,但其却调用了 LinkedHashMap 作为最终实现,从而实现了对插入元素顺序的维护。
发表评论
最新留言
关注你微信了!
[***.104.42.241]2025年05月10日 07时29分43秒
关于作者

喝酒易醉,品茶养心,人生如梦,品茶悟道,何以解忧?唯有杜康!
-- 愿君每日到此一游!
推荐文章
Python的内置函数(四十一)、 index()
2019-03-17
卷积神经网络的工程技巧总结
2019-03-17
Python字符串操作之字符串分割与组合
2019-03-17
tf.tuple
2019-03-17
开放式系统互联模型(网络的七层架构)
2019-03-17
windows系统配置自动tomcat
2019-03-17
49数据通路的功能和基本结构
2019-03-17
Java面试宝典(2020版)
2019-03-17
4大继承模式
2019-03-17
06二维数组
2019-03-17
Springboot 初學習
2019-03-17
如何用华为位置服务实现搜索位置返回父子节点信息
2019-03-17
2020年云南省专升本 - 「计算机」专业各院校招生计划
2019-03-17
同一个实例注册到两个eureka上面
2019-03-17
【数据库】实验二~六
2019-03-17
【Qt】布局
2019-03-17
uni-app的请求数据的封装
2019-03-17
C++容器笔记
2019-03-17
Android 四大组件、五大存储、六大布局总结
2019-03-17