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类型

最新文章

  1. JavaScript学习笔记-实例详解-类(二)
  2. 在sublime中使用less
  3. Compound Interest Calculator4.0
  4. phpstorm运行在浏览器中执行php文件报502错误
  5. bootstrap读书笔记
  6. 【LeetCode】284. Peeking Iterator
  7. [C#]使用IFormattable接口来实现字符串格式化
  8. arduino与DS1302时钟调试失败的分析
  9. EntityFramework 6.x和EntityFramework Core插入数据探讨
  10. MySQL8主从配置
  11. Linux编程 13 (系统环境变量位置, 环境变量持久化)
  12. linux switch 跳转到 ”跳转至 case 标号“ 的错误
  13. net.exe use命令的使用
  14. LintCode——旋转字符串
  15. 流媒体技术学习笔记之(八)海康、大华IpCamera RTSP地址和格式
  16. 《python源码剖析》,看看
  17. 【大数据系列】Hive安装及web模式管理
  18. jQuery.when(deferreds)
  19. 51nod 1681 公共祖先 | 树状数组
  20. 如何在Windows系统下隐藏文件

热门文章

  1. application.yaml
  2. 前台主页功能-前台轮播图功能完成-git介绍和安装-git使用流程-git常用命令-git忽略文件
  3. linux中用crontab定时任务启动jar无效
  4. vue2中底层响应式数据实现
  5. RabbitMQ管理界面使用之手动送数据
  6. java基础(一)~~内存分析
  7. mysql压缩表小记
  8. TexturePacker基本使用
  9. linux-添加磁盘-MBR分区-挂载
  10. IDEA中已配置阿里镜像,但maven无法下载jar包的问题