[TIL]コレクションフレームの整理

5671 ワード


List


データの格納順序を維持し、重複を許可します.

ArrayList


既存のVectorを実現しました.
内部には、オブジェクトの配列順序を使用してデータが格納されます.
ジェネレータで配列のサイズを設定できます.
長所

  • 配列のサイズが十分大きい場合、シーケンスが格納されたり、一番後ろから順次削除されたりすると、速度が速くなります.

  • 任意の要素に近づくのが一番速いです.
  • 短所

  • サイズを変更できないため、メモリが無駄になる可能性があります.

  • 非連続データの追加または削除には時間がかかります.
    配列の中央にデータを追加する場合は、他のデータをコピーして移動して空席を作成する必要があります.
  • LinkedList


    JavaのLinkedListは二重リンクリストとして実現される.
    不連続に存在するデータが相互に接続される形式で構成される.
    各ノードは、自身に関連付けられた前の要素と次の要素への参照とデータから構成されます.
    class Node{
    	Node next;
        	Node previous;
        	Object obj;
    }
    長所
  • の中間データを追加/削除すると、非常に高速です.各要素間の接続を変えるだけでいいからです.
  • 短所

  • 順番に追加/削除するのは比較的遅いです.

  • 要素に近づく速度が遅い.各要素は不連続であるため、要素の開始からnまで順に従う.
  • Stack & Queue


    Stack


    スタックは後入先出です.これはLIFO構造です.
    JavaのStackクラスは集合フレームワーク以前から存在していた.
    だからArrayListではなくVectorから引き継いで実現した

    Queue


    Qは先入先出です.これはFIFO構造です.
    インプリメンテーションボディ
  • PriorityQueue
    保存順序にかかわらず、優先度の高いものから取り出します.
    nullは保存できません.
  • Deque(Double-Ended Queue)
    両端に追加/削除できます.
    実装体にはArrayDequeやLinkedListなどがある.
    スタックとキューを統合するように.
  • Iterator


    Iディストーション、ListIディストーション、およびEnumerationは、セットに格納された要素にアクセスするためのインタフェースである.
    EnumerationはIrodatorの旧バージョンです.
    ListIvalenterは、Ivalenter機能の強化です.

    Iterator


    Collectionインタフェースで定義されるメソッドであるため、Collectionインタフェースの子リストおよびSetにも含まれる.
    一方向にしか移動できません.( iterator.next() )
    next()を呼び出し、remove()を呼び出す必要があります.

    ListIterator


    奇形機は一方向にしか移動できないが、ListI奇形機は双方向に移動できる.
    実装リストの集合でのみ使用できます.
    next()を呼び出し、remove()を呼び出す必要があります.

    Arrays


    配列を処理するための有用な方法を定義した.
    Arraysクラスのメソッド

  • copyOf(), copyOfRange()
    copyOf()は配列全体を表す.
    copyOfRange()配列の一部をコピーし、新しい配列を作成して返します.

  • fill(), setAll()
    fill()は、配列内のすべての要素を指定した値で埋め込みます.
    setAll()は、配列を埋め込むための関数型インタフェースをパラメータとして受け入れます.

  • sort(), binarySearch()
    配列をソートする場合、sort()です.
    binarySearch()は、ソート配列内の要素を検索するために使用されます.

  • equals(), toString()
    equals()比較要素.
    toString()配列を文字列に変換します.

  • asList(Objet.. a)
    リストに並べ替えて返します.
    asList()が返すListのサイズは変更できません.
    (Unsupported OperationExceptionが表示されます)

  • parallelXXX(), spliterator(), stream()
    より速い結果を得るために、並列メソッドは複数のスレッドによって処理される.
    spliterator()は、複数のスレッドが処理できるように、1つのタスクを複数のタスクに分割するSpliteratorを返します.
    stream()はコレクションをstreamに変換します.
  • Comparator & Comparable


    どちらも、インタフェースのローカルセットをソートするために必要な方法を定義します.

    Comparator


    Compareableを実装するクラスは、同じタイプのインスタンス間で比較可能なクラスであり、主にIntegerなどのパッケージクラスとString、Date、Fileなどである.
    基本的には昇順で並べ替えられています.

    Comparator


    基本ソート基準に加え、他の基準でソートしたい場合に使用します.

    Set


    繰り返しを許さない.

    HashSet


    格納順序は保持されません.
    保存順序を維持する場合は、LinkedHashSetを使用します.
  • 注意点
    クラスがequals()メソッドを上書きしていない場合.
    クラス内の2つのオブジェクトの内容が同じであっても、同じオブジェクトとはみなされません.
    equals()メソッドはデフォルトでインスタンスのアドレス値であるためです.
    彼らは同じかどうかを判断するからだ.
  • TreeSet


    データをバイナリ検索ツリーとして格納します.
    バイナリ検索ツリーのパフォーマンスを向上させるRed Black Treeを実現します.
    格納順序は保持されません.
    常に昇順に並べます.
    バイナリ検索ツリー

  • 各ノードには、最大2つのサブノードしかありません.

  • 左側の子ノードの値は親ノードの値より小さく、右側の子ノードの値は親ノードの値より大きくなければなりません.

  • ノードの追加と削除には時間がかかります.

  • 検索とソートが容易

  • 重複する値を保存できません.
  • Map


    これは鍵と価値をペアにした資料構造です.

    HashMap


    ハッシュを使用しているため、大量のデータを検索する上で優れたパフォーマンスを発揮しています.
    Entryという名前の内部クラスを定義し、Entryタイプの配列を再宣言します.
    Entry[] table;
    class Entry{
    	Object key;
    	Object value;
    }
    鍵は一意でなければなりませんが、値の重複を許可します.
    長所
  • の追加、削除、検索、アクセス性に優れています.検索は最高のパフォーマンスを示します.
  • 短所
  • の性能は、ハッシュコードを生成するハッシュ関数に依存する.
    ハッシュコードを大量に繰り返すハッシュ関数を使用すると、パフォーマンスが低下します.
  • Hashing

  • 配列とリンクリストを組み合わせた資料構造を使用します.

  • 格納するデータのキーをハッシュ関数に入れると、配列の要素が取得され、リンクリストに格納されます.
  • TreeMap


    キーと値のペアからなるデータをバイナリ検索ツリーとして格納します.
    検索とソートに適したコレクションクラス.
    ほとんどの場合、HashMapの検索性能はTreeMapより優れている.
    長所
  • のソートと検索(特に範囲検索)に適しています.
  • 短所
  • の検索性能はHashMapより低い.
  • Collections


    コレクションに関連するメソッドを提供します.
    fill()、copy()、sort()、binarySearch()が含まれます.

    どうきしゅうごう


    VectorやHashtableのような旧バージョン(JDK 1.2以前)のクラス自体に同期処理がある.
    ただし、場合によっては、新しく追加されたArrayListやHashMapなどの集合は、同期を自分で処理する必要はなく、必要に応じてjavaを使用するだけです.util.Collectionsクラスの同期メソッドを使用して、同期処理を可能にするように変更しました.
    同期メソッドはsynchronizedメソッド名の前にあります.

    ふへんしゅうごう


    お気に入りセットを作成するには、読む前にいくつかの方法があります.
    メソッド名の前に変更不可を付けます.

    モノトーンセット


    1つのオブジェクトのみを格納する単一のトーンセットを作成する方法がいくつかあります.
    メソッド名の前にsingletonを付けます.