Java コレクションクラスの基本概念#
Java のコレクションフレームワークは大きくCollection
とMap
に分けられます;両者の違い:
- Collection は単列コレクション;Map は双列コレクション
- Collection の中で Set 系列のみ要素が一意である必要がある;Map ではキーが一意で、値は重複可能
- Collection のデータ構造は要素に対して;Map のデータ構造はキーに対して。
Collection#
Collection は二大体系を含みます:
List
: 順序があり、インデックスがあり、インデックスに基づいて値を取得でき、要素は重複可能Set
: 順序がなく、要素は重複できない
List#
含まれるもの:
ArrayList
:底層は配列実装、検索速度が速く、追加削除速度が遅いLinkedList
:リンクリスト構造に基づいて実装されており、検索速度が遅く、追加削除速度が速い、特別なメソッドを提供し、先頭と末尾の要素操作(追加削除検索)を行う、スレッドセーフではないVector
:配列構造、検索が速く、追加削除が遅い、スレッドセーフであるため効率が低い(廃止予定)
Set#
Set コレクションの特徴:要素が重複せず、順序がなく、インデックスがない。Set コレクションには以下があります:
HashSet
: 順序がなく、要素にインデックスがなく、要素は重複できない。底層はハッシュテーブル。LinkedHashSet
: リンクリストとハッシュテーブルを共同で実装しているため、順序があり、要素が一意である特徴を持つTreeSet
:二分木のデータ構造に基づき、要素が一意で、順序がない(要素を追加する際にソート可能)
Map#
Map は双列コレクションであり、キーと値のペアを保持し、キーは一意である必要があり、値は重複可能で、以下を含みます:
HashMap
LinkedHashMap
TreeMap
ツールクラス Collections#
Collections ツールクラスは Collection/Map に対する多くの操作を提供します
ソート操作(主に List インターフェース関連)#
reverse(List list)
:指定された List コレクション内の要素の順序を反転しますshuffle(List list)
:List 内の要素をランダムに並べ替えます(シャッフル)sort(List list)
:List 内の要素を自然昇順でソートしますsort(List list, Comparator c)
:カスタムコンパレータを使用してソートしますswap(List list, int i, int j)
:指定された List コレクション内の i 位置の要素と j 位置の要素を交換しますrotate(List list, int distance)
:すべての要素を右に指定された長さだけシフトします。distance が size と等しい場合、結果は変わりません
検索と置換(主に Collection インターフェース関連)#
binarySearch(List list, Object key)
:二分探索法を使用して、指定されたオブジェクトの List 内のインデックスを取得します。前提としてコレクションはすでにソートされていますmax(Collection col)
:最大要素を返しますmax(Collection col, Comparator comp)
:カスタムコンパレータに基づいて最大要素を返しますmin(Collection col)
:最小要素を返しますmin(Collection col, Comparator comp)
:カスタムコンパレータに基づいて最小要素を返しますfill(List list, Object obj)
:指定されたオブジェクトで埋めますfrequency(Collection Object o)
:指定されたコレクション内で指定されたオブジェクトが出現する回数を返しますreplaceAll(List list, Object old, Object new)
:置換します
不変コレクションの設定#
Collections には不変コレクションを返す三種類のメソッドがあります:
emptyXxx()
:空の不変コレクションオブジェクトを返しますsingletonXxx()
:指定されたオブジェクトのみを含む不変コレクションオブジェクトを返しますunmodifiableXxx()
:指定されたコレクションオブジェクトの不変ビューを返します
その他#
disjoint(Collection<?> c1, Collection<?> c2)
: もし二つの指定されたコレクションに同じ要素がなければ、true を返します。addAll(Collection<? super T> c, T... a)
: 指定された要素をすべて指定されたコレクションに追加する便利な方法Comparator<T> reverseOrder(Comparator<T> cmp)
: 指定されたコンパレータの順序を強制的に反転させるコンパレータを返します。指定されたコンパレータが null の場合、このメソッドは reverseOrder () と同等です(言い換えれば、Comparable インターフェースを実装したオブジェクトコレクションの自然順序を強制的に反転させるコンパレータを返します)