版本:jdk1.8
继承HashSet
初始化的时候会把父类HashSet中的属性map初始化为了LinkedHashMap 可以保证插入或者读取的顺序
LinkedHashSet默认accessOrder是以插入的顺序
数据不可重复
非线程安全
LinkedHashSet相关的UML
重要构造
/**
* 把父类HashSet中的属性map初始化为了LinkedHashMap
* @param initialCapacity 初始化容量
* @param loadFactor 加载因子
*/
public LinkedHashSet(int initialCapacity, float loadFactor) {
super(initialCapacity, loadFactor, true);
}
/**
* 传入容量和加载因子初始化map
* @param dummy 暂时没有用到
*/
HashSet(int initialCapacity, float loadFactor, boolean dummy) {
map = new LinkedHashMap<>(initialCapacity, loadFactor);
}
可以看到调用的是HashSet的构造函数,该构造是没有加public,使用的是默认修饰包外是无法调用的,把属性map初始化为了LinkedHashMap这里是关键,保证了有序性。
后面的也不介绍了,基本都是由父类HashSet完成,而父类又交给内部属性LinkedHashMap来实现,LinkedHashSet比较简单
想要查看完整的LinkedHashSet源码解析点击这里