LinkedHashSet底层说明

LinkedHashSet说明

1) LinkedHashSet是 HashSet的子类

2) LinkedHashSet底层维护的是一个 LinkedHashMap,底层结果一个数组table+双向链表

3) LinkedHashSet根据元素的 hashCode 值来决定元素的存储位置,同时使用双向链表维护元素的次序,这使得元素看起来是以插入顺序保存的。

4) LinkedHash Set不允许添重复元素

LinkedHashSet底层说明

1)在 LinkedHast Set中维护了一个hash表和双向链表 ( LinkedHashSet有head和tail )

2)每一个节点有 before和 after属性这样可以形成双向链表

3)在添加一个元素时,先求hash值,再求索引,确定该元素在table的位置,

然后将添加的元素加入到双向链表如果已经存在,不添加【原则和 HashSet一样】)

 tail.next= newElement//示意代码
newElement.pre = tail
tail = newElement;

4)这样的话,我们遍历 LinkedHashSet也能确保插入顺序和遍历顺序一致

posted @ 2021-11-16 10:34  肖万  阅读(177)  评论(0)    收藏  举报