Set
Set集合是无序的(添加顺序和取出顺序不一致,但是取出的顺序是固定的),没有索引;
不允许重复元素,最多包含一个null;
1、HashSet
底层实际是HashMap,HashMap底层是(数组+链表+红黑树)
hashset底层实现原理
hashSet的底层HashMap的扩容机制和转成红黑树:
2、LinkedHashSet
底层是一个LinkedHashMap(是HashMap的子类),底层维护了一个 数组+双向链表
LinkedHashSet 根据元素的 HashCode值来决定元素的存储位置,同时使用链表来维护元素的次序,这使得元素看起来是以插入顺序保存的,不允许添重复元素
添加第一次时直接将数组table扩容到16,存放的结点类型是LinkedHashMap
E
n
t
r
y
数组是
H
a
s
h
M
a
p
Entry 数组是HashMap
Entry数组是HashMapNode[] 存放的元素/数据是 LinkedHashMap$Entry类型