LinkedHashSet的全面说明
- LinkedHashSet是HashSet的子类
public class LinkedHashSet<E>
extends HashSet<E>
implements Set<E>, Cloneable, java.io.Serializable {
2. LinkedHashSet底层是一个LinkdeHashMap,底层维护了一个 数组+双向链表
3. LinkedHashSet根据元素的hashCode值来决定元素的存储位置,同时使用链表维护元素的次序(图),这使得元素看起来是以插入顺序保存的。
4. LinkedHashSet不允许添加重复元素

源码解读:
- LinkedHashSet加入顺序和取出顺序一致
- LinkedHashSet底层维护的是一个LinkedHashMap(是HashMap的子类)
- LinkedHashSet底层结构(数组table+双向链表)
- 添加第一次时,直接将数组table扩容到16,存放的节点类型是LinkedHashMap$Entry
- 数组是HashMap$Node[] 存放的元素是 LinkedHashMap$Entry 类型
继承关系是在内部类完成
Entry是LinkedHashMap的内部类
static class Entry<K,V> extends HashMap.Node<K,V> {
Entry<K,V> before, after;
Entry(int hash, K key, V value, Node<K,V> next) {
super(hash, key, value, next);
}
}
LinkedHashSet是HashSet的子类,基于LinkedHashMap实现,保证元素的插入顺序。它使用元素的hashCode确定存储位置,并用双向链表维护元素次序。在添加时,首次会将数组扩容到16,存储节点类型为LinkedHashMap$Entry。通过内部类Entry扩展HashMap$Node,维持元素的插入和遍历顺序。

2221

被折叠的 条评论
为什么被折叠?



