集合-Link-Link HashSetの詳細とLinkedHashSetとLinkedHashMapとHashSetの違い
6126 ワード
LinkedHashSetを学ぶには、HashSetとLinkedHashMapの2つのクラスを学ぶ必要があります.
HashSetソースコード詳細LinkdHashMapソース詳細特徴:
継承関係:
コンストラクション関数:LinkedHashSetは親クラスのコンストラクション関数を呼び出し、LinkedHashMapインスタンスを作成します.
親コンストラクション関数
LinkedHashSetコンストラクタ:
LinkedHashMapとLinkedHashSetとHashSetの違い:
LinkedHashSetはLinkedHashMapのアクセス秩序のみを実現した.
LinkedHashSetは他の2つのクラスの部分機能のパッケージを実現した.
HashSetとLinkedHashSetはいずれもキーのみを操作し、value値はnew Object()である.
LinkedHashSet適用シーン:
LinkedHashSetは、データの再利用を実現し、集合クラスのデータにアクセス秩序を実現する.
HashSetソースコード詳細LinkdHashMapソース詳細特徴:
継承関係:
public class LinkedHashSet<E>
extends HashSet<E> // HashSet
implements Set<E>, // set
Cloneable, // clone
java.io.Serializable { //
コンストラクション関数:LinkedHashSetは親クラスのコンストラクション関数を呼び出し、LinkedHashMapインスタンスを作成します.
親コンストラクション関数
HashSet(int initialCapacity, float loadFactor, boolean dummy) {
// LinkedHashMap :LinkedHashMap;
map = new LinkedHashMap<>(initialCapacity, loadFactor);
}
LinkedHashSetコンストラクタ:
public LinkedHashSet(int initialCapacity, float loadFactor) {
super(initialCapacity, loadFactor, true);
}
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);
}
LinkedHashMapとLinkedHashSetとHashSetの違い:
LinkedHashSetはLinkedHashMapのアクセス秩序のみを実現した.
LinkedHashSetは他の2つのクラスの部分機能のパッケージを実現した.
HashSetとLinkedHashSetはいずれもキーのみを操作し、value値はnew Object()である.
LinkedHashSet適用シーン:
LinkedHashSetは、データの再利用を実現し、集合クラスのデータにアクセス秩序を実現する.