集合-Link-Link HashSetの詳細とLinkedHashSetとLinkedHashMapとHashSetの違い

6126 ワード

LinkedHashSetを学ぶには、HashSetとLinkedHashMapの2つのクラスを学ぶ必要があります.
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は、データの再利用を実現し、集合クラスのデータにアクセス秩序を実現する.