Java集合-LinkedHashSet

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中的元素顺序是可以保证的,也就是说遍历序和插入序是一致的。

不允许添加重复元素

image


【使用】

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

posted @ 2021-10-16 14:42  Wiiiimp  阅读(151)  评论(0编辑  收藏  举报