[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構造です.
インプリメンテーションボディ
保存順序にかかわらず、優先度の高いものから取り出します.
nullは保存できません.
両端に追加/削除できます.
実装体にはArrayDequeやLinkedListなどがある.
スタックとキューを統合するように.
Iterator
Iディストーション、ListIディストーション、およびEnumerationは、セットに格納された要素にアクセスするためのインタフェースである.
EnumerationはIrodatorの旧バージョンです.
ListIvalenterは、Ivalenter機能の強化です.
Iterator
Collectionインタフェースで定義されるメソッドであるため、Collectionインタフェースの子リストおよびSetにも含まれる.
一方向にしか移動できません.( iterator.next() )
next()を呼び出し、remove()を呼び出す必要があります.
ListIterator
奇形機は一方向にしか移動できないが、ListI奇形機は双方向に移動できる.
実装リストの集合でのみ使用できます.
next()を呼び出し、remove()を呼び出す必要があります.
Arrays
配列を処理するための有用な方法を定義した.
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を使用します.
繰り返しを許さない.
HashSet
格納順序は保持されません.
保存順序を維持する場合は、LinkedHashSetを使用します.
クラスがequals()メソッドを上書きしていない場合.
クラス内の2つのオブジェクトの内容が同じであっても、同じオブジェクトとはみなされません.
equals()メソッドはデフォルトでインスタンスのアドレス値であるためです.
彼らは同じかどうかを判断するからだ.
TreeSet
データをバイナリ検索ツリーとして格納します.
バイナリ検索ツリーのパフォーマンスを向上させるRed Black Treeを実現します.
格納順序は保持されません.
常に昇順に並べます.
バイナリ検索ツリー
各ノードには、最大2つのサブノードしかありません.
左側の子ノードの値は親ノードの値より小さく、右側の子ノードの値は親ノードの値より大きくなければなりません.
ノードの追加と削除には時間がかかります.
検索とソートが容易
重複する値を保存できません.
Map
これは鍵と価値をペアにした資料構造です.
HashMap
ハッシュを使用しているため、大量のデータを検索する上で優れたパフォーマンスを発揮しています.
Entryという名前の内部クラスを定義し、Entryタイプの配列を再宣言します.Entry[] table;
class Entry{
Object key;
Object value;
}
鍵は一意でなければなりませんが、値の重複を許可します.
長所
Entry[] table;
class Entry{
Object key;
Object value;
}
ハッシュコードを大量に繰り返すハッシュ関数を使用すると、パフォーマンスが低下します.
配列とリンクリストを組み合わせた資料構造を使用します.
格納するデータのキーをハッシュ関数に入れると、配列の要素が取得され、リンクリストに格納されます.
TreeMap
キーと値のペアからなるデータをバイナリ検索ツリーとして格納します.
検索とソートに適したコレクションクラス.
ほとんどの場合、HashMapの検索性能はTreeMapより優れている.
長所
Collections
コレクションに関連するメソッドを提供します.
fill()、copy()、sort()、binarySearch()が含まれます.
どうきしゅうごう
VectorやHashtableのような旧バージョン(JDK 1.2以前)のクラス自体に同期処理がある.
ただし、場合によっては、新しく追加されたArrayListやHashMapなどの集合は、同期を自分で処理する必要はなく、必要に応じてjavaを使用するだけです.util.Collectionsクラスの同期メソッドを使用して、同期処理を可能にするように変更しました.
同期メソッドはsynchronizedメソッド名の前にあります.
ふへんしゅうごう
お気に入りセットを作成するには、読む前にいくつかの方法があります.
メソッド名の前に変更不可を付けます.
モノトーンセット
1つのオブジェクトのみを格納する単一のトーンセットを作成する方法がいくつかあります.
メソッド名の前にsingletonを付けます.
Reference
この問題について([TIL]コレクションフレームの整理), 我々は、より多くの情報をここで見つけました
https://velog.io/@cksdnr066/TIL-컬렉션-프레임웍-정리
テキストは自由に共有またはコピーできます。ただし、このドキュメントのURLは参考URLとして残しておいてください。
Collection and Share based on the CC Protocol
Reference
この問題について([TIL]コレクションフレームの整理), 我々は、より多くの情報をここで見つけました https://velog.io/@cksdnr066/TIL-컬렉션-프레임웍-정리テキストは自由に共有またはコピーできます。ただし、このドキュメントのURLは参考URLとして残しておいてください。
Collection and Share based on the CC Protocol