1 LinkedHashSet
1.1 底層結構
LinkedHashSet是基于LinkedHashMap實現(xiàn)的婚瓜,所以LinkedHashSet的數(shù)據(jù)結構就是LinkedHashMap的數(shù)據(jù)結構今阳。
2 四個關注點
關注點 | 結論 |
---|---|
LinkedHashSet是否允許空 | 允許 |
LinkedHashSet是否允許重復數(shù)據(jù) | 不允許(鍵不允許重復) |
LinkedHashSet是否有序 | 有序 |
LinkedHashSet是否線程安全 | 非線程安全 |
3 LinkedHashSet源碼解析
3.1 類的繼承關系
public class LinkedHashSet<E>
extends HashSet<E>
implements Set<E>, Cloneable, java.io.Serializable
說明:LinkedHashSet繼承自HashSet房维,也實現(xiàn)了一些接口。
3.2 類的屬性
public class LinkedHashSet<E>
extends HashSet<E>
implements Set<E>, Cloneable, java.io.Serializable {
// 版本序列號
private static final long serialVersionUID = -2851667679971038690L;
}
3.3 類的構造函數(shù)
LinkedHashSet會調用HashSet的父類構造函數(shù)银亲,讓其底層實現(xiàn)為LinkedHashMap变姨,這樣就很好的實現(xiàn)了LinkedHashSet所需要的功能。
1. LinkedHashSet(int initialCapacity, float loadFactor)型構造函數(shù)
public LinkedHashSet(int initialCapacity, float loadFactor) {
super(initialCapacity, loadFactor, true);
}
2. LinkedHashSet(int initialCapacity)型構造函數(shù)伍纫。
public LinkedHashSet(int initialCapacity) {
super(initialCapacity, .75f, true);
}
3. LinkedHashSet()型構造函數(shù)宗雇。
public LinkedHashSet() {
super(16, .75f, true);
}
4. LinkedHashSet(Collection<? extends E> c)型構造函數(shù)。
public LinkedHashSet(Collection<? extends E> c) {
super(Math.max(2*c.size(), 11), .75f, true);
addAll(c);
}