コレクションクラスの比較
コレクションクラスには大きく分けてList、Map、Setの3種類あります。そして、さらに性質の異なるクラスに分かれています。各コレクションクラスの特徴は以下のようになっています。
ArrayList | LinkedList | HashMap | TreeMap | HashSet | TreeSet | |
---|---|---|---|---|---|---|
インタフェイス | List | List | Map | Map | Set | Set |
要素の重複 | ○ | ○ | × | × | × | × |
null値の要素 | ○ | ○ | ○ | × | ○ | × |
自動ソート | × | × | × | ○ | × | ○ |
List構造 コレクションクラス
List構造は、要素を順番付けして管理するデータ構造です。
「ArrayList」「LinkedList」の2種類があります。
要素がインデックス(番号)順に並んでいるので、番号を指定して要素の取得、挿入、更新、削除ができます。また、Iteratorや拡張for構文を使って先頭から順番に要素を取得することも出来ます。
ArrayListは要素の取得が早いが挿入や削除が遅い、LinkedListは要素の挿入や削除は早いが取得が遅いという特徴があります。
List構造は、要素の重複は可能です。
Map構造 コレクションクラス
Map構造は、キーと値をセットにしたものを1つの要素として管理するデータ構造です。
「HashMap」「TreeMap」の2種類があります。
要素がキーと値で管理されているので、キーを指定して値の取得や更新、削除を行います。
HashMapは格納順は管理されませんが、TreeMapはキーによって自動的にソートして管理されます。
また、HashMapはキーと値にnullを使用することが可能ですが、TreeMapはnullは使用することができません。
Map構造は、キーによって値を管理するためキーの重複は不可です。
(同じキーがセット(put)された場合は上書きされます。)
Set構造 コレクションクラス
Set構造は、要素を順番付けしないで管理するデータ構造です。
「HashSet」「TreeSet」の2種類があります。
Listのような順番付けや、Mapのようなキー管理もないため、要素の取得にはIteratorや拡張for構文で取得します。
このようなことからHashSetは要素の取得順は保証されませんが、TreeSetは自動ソートされて管理されるのでソートされた順番で要素が取得されます。
また、HashSetは要素にnullを使用する事が可能ですが、TreeSetはnullを使用する事ができません。
Set構造は、要素の重複は不可です。(同じキーがセット(add)された場合は上書きされます。)