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 は双列コレクションであり、キーと値のペアを保存し、キーはユニークである必要があり、値は重複可能です。含まれているもの:
HashMapLinkedHashMapTreeMap
ツールクラス 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 インターフェースを実装したオブジェクトコレクションの自然順序を強制的に反転させるコンパレータを返します)。