文章目录
  1. 1. LinkedHashSet实现原理
    1. 1.1. 特点
    2. 1.2. 数据结构和初始化
    3. 1.3. 相关

LinkedHashSet实现原理

特点

  1. Set接口实现,HashSet的子类
  2. 允许null值
  3. 元素不重复
  4. 迭代有序(插入顺序或访问顺序)
  5. 非线程安全

数据结构和初始化

LinkedHashSet的源码非常的简单,如下就是所有的源码,从代码中可以看出,都是构造函数,并且都是调用了父类HashSet的构造函数HashSet(int initialCapacity, float loadFactor, boolean dummy),还记得这个HashSet的构造方法吗?它会初始化一个LinkedHashMap用来保存元素,对的,LinkedHashMap底层就是使用LinkedHashMap来保存元素的,所有LinkedHashSet也是哈希表和双重链表的结合体,所有的元素保存到LinkedHashMap的key上,value为默认常量,所以是唯一的。

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
public class LinkedHashSet<E> extends HashSet<E>
implements Set<E>, Cloneable, java.io.Serializable {


private static final long serialVersionUID = -2851667679971038690L;
//指定初始容量和加载因子
public LinkedHashSet(int initialCapacity, float loadFactor) {
super(initialCapacity, loadFactor, true);
}

//指定初始容量,加载因子默认为0.75
public LinkedHashSet(int initialCapacity) {
super(initialCapacity, .75f, true);
}

//默认构造函数
public LinkedHashSet() {
super(16, .75f, true);
}

//列表元素初始化
public LinkedHashSet(Collection<? extends E> c) {
super(Math.max(2*c.size(), 11), .75f, true);
addAll(c);
}
}

相关

像更好的了解LinkedHashSet,先了解下LinkedHashMap和HashSet是非常必要的:LinkedhashMap实现原理HashSet实现原理

文章目录
  1. 1. LinkedHashSet实现原理
    1. 1.1. 特点
    2. 1.2. 数据结构和初始化
    3. 1.3. 相关