JAva集合フレームワークまとめ(三)

2042 ワード

Linkインタフェースのまとめが終わり、次はsetインタフェースです
Setインタフェースの特徴:–Setインタフェースはユニークで無秩序なオブジェクトのセットを格納する–(格納と取り出しの順序が必ずしも一致しない)–データを操作する方法はリストに似ていない.Setインタフェースにはget()メソッドは存在しない–対応する位置の要素値を下付きで取得することはできない.無秩序であるため
実装クラス:1、HashSet:-Hashtableハッシュテーブルストレージ構造を採用–利点:追加速度が速く、クエリー速度が速く、削除速度が速い-欠点:無秩序2、LinkedHashSet▪ ハッシュ・テーブル・ストレージ構造を採用し、チェーン・テーブルのメンテナンス・シーケンスを使用▪順序付け(順序付け)3、TreeSet–ツリー(赤と黒のツリー)を使用したストレージ構造–利点:順序付け(順序付け後の昇順)クエリー速度がListより速い–欠点:クエリー速度がHashSetより速い
HashSetはまずhashテーブルについて述べ,定義に基づいてキー値(Key value)に基づいて直接アクセスするデータ構造である.つまり、キー値をテーブルの1つの場所にマッピングすることでレコードにアクセスし、検索を高速化します.このマッピング関数をハッシュ関数と呼び,記録を格納する配列をハッシュリストと呼ぶ.
hashSet操作:1、hashテーブルを書くたびにequalsとhashcodeを再定義し、テーブル内の同じオブジェクトが一意であることを確認する必要があります.要素を設定するとき、カスタムオブジェクトであれば、オブジェクト内のequalsとhashcodeの方法を検索し、ない場合はアドレスを比較します.2、HashSetはどのように元素の唯一性を保証しますか?答え:要素の2つの方法で、hashCodeとequalsの方法で要素のHashCodeの値が同じであれば、equalsがtrueであるかどうかを判断します.要素のhashCodeの値が同じでなければ、equalsの方法は呼び出されません.
TreeSet定義:n(n>=1_)個の有限ノードは階層関係のある集合を構成し,それを「木」と呼ぶのは,逆さまに掛けられた木のように見える,すなわち根が上を向い,葉が下を向いているからである.次のような特徴があります.
             ;             ,                ;      ,                 。

特徴:–ツリー(赤と黒のツリー)のストレージ構造を採用する(ツリーのインタフェースはデータ構造書を参照できるが、ここでは詳しく説明しない)–利点:順序付け(並べ替え後の昇順)クエリ速度がListより速い–欠点:クエリ速度がHashSetより速い
注意ここには、集合内のオブジェクトの「サイズ」の順序を決定するアルゴリズムがあります.•「ソート」可能なすべてのクラスにjava.lang.Comparableインタフェースが実装されています.Comparableインタフェースには1つの方法しかありません.
  public int compareTo(Object obj); 
     : 
       this > obj
       this < obj
     0   this == obj
  

Comparableインタフェースを実装したクラスは、comparaToメソッドを実装することによって、クラスオブジェクトのソート方法を決定する.
比較器の分類(位置決定):
              ,  comparable     
             ,    comparator     ,              
 public class SetDemo implements Comparator TreeSet treeSet = new TreeSet(new SetDemo());

注意:1、外部コンパレータはツールクラスとして定義できます.この場合、比較する必要があるすべてのルールが一致している場合は、2を多重化できます.2、内部コンパレータは現在のオブジェクトを格納する場合にのみ使用できます.3、両方が同時に存在する場合は、外部コンパレータの4を聞いて、コンパレータを使用する場合はequalsメソッドは呼び出されません.