基础介绍
- 有序
- 不重复
- 无索引
继承关系
1.实现Cloneable接口
2.实现java.io.Serializable接口
3.继承HashSet类
构造器
1.空参构造:构造一个新的空集合;后备 HashMap 实例具有默认初始容量 (16) 和负载系数 (0.75)。
public LinkedHashSet() {
super(16, .75f, true);
}
2.有参构造:传入指定数组容量
public LinkedHashSet(int initialCapacity) {
super(initialCapacity, .75f, true);
}
3.有参构造:传入指定初始容量和荷载系数
public LinkedHashSet(int initialCapacity, float loadFactor) {
super(initialCapacity, loadFactor, true);
}
4.有参构造:传入一个Collection的子类,创建一个hashmap,负载系数还是0.75,容量就根据传入的子类中元素数量来判断,将元素数*0.75+1与16比较,哪个大选哪个,然后再把数据加到map中
public LinkedHashSet(Collection<? extends E> c) {
super(Math.max(2*c.size(), 11), .75f, true);
addAll(c);
}
总结
全照搬linkedhashmap,保证有序的原理和linkedhashmap一样,如果要保证自定义类型的对象唯一需要重写自定义对象的hashcode方法,不然因为每个对象地址值不同,就算里面属性一样也会判定为两个不同的元素。