Java集合-LinkedHashSet
2024-09-08 19:34:35
LinkedHashSet
重点:
LinkedHashSet 不允许重复元素,与 HashSet的区别是:它是有序的
LinkedHashSet 底层结构是 数组table + 双向链表
【介绍】
public class LinkedHashSet<E>
extends HashSet<E>
implements Set<E>, Cloneable, java.io.Serializable
LinkedHashSet 是 HashSet 的子类
LinkedHashSet 底层结构是 数组table + 双向链表
LinkedHashSet根据元素的 hashCode值来决定元素的存储位置,同时使用链表维护元素的次序,这样做的意义或者好处就是LinkedHashSet中的元素顺序是可以保证的,也就是说遍历序和插入序是一致的。
不允许添加重复元素
【使用】
参照 Set接口的方法
【底层分析】
(1)在 LinkedHashSet 中维护了一个 hash表和双向链表( LinkedHashSet 有 head 和tail);
(2)每一个结点有 before 和 after 属性,这样可以形成双向链表;
(3)添加 add 机制与 HashSet一样;
(4)如此一来, LinkedHashSet 能确保插入顺序和遍历顺序一致。
(5)LinkedHashSet 底层维护的是一个 LinkedHashMap (是HashMap的子类);
(6)添加第一次时,直接将 数组table扩容到 16,存放的结点类型是 LinkedHashMap$Entry
(7)数组是 HashMap¥Node[] 类型,存放的元素/数据是 LinkedHashMap¥Entry类型
最新文章
- JavaScript学习笔记-实例详解-类(二)
- 在sublime中使用less
- Compound Interest Calculator4.0
- phpstorm运行在浏览器中执行php文件报502错误
- bootstrap读书笔记
- 【LeetCode】284. Peeking Iterator
- [C#]使用IFormattable接口来实现字符串格式化
- arduino与DS1302时钟调试失败的分析
- EntityFramework 6.x和EntityFramework Core插入数据探讨
- MySQL8主从配置
- Linux编程 13 (系统环境变量位置, 环境变量持久化)
- linux switch 跳转到 ”跳转至 case 标号“ 的错误
- net.exe use命令的使用
- LintCode——旋转字符串
- 流媒体技术学习笔记之(八)海康、大华IpCamera RTSP地址和格式
- 《python源码剖析》,看看
- 【大数据系列】Hive安装及web模式管理
- jQuery.when(deferreds)
- 51nod 1681 公共祖先 | 树状数组
- 如何在Windows系统下隐藏文件