Java|コレクション-List/Set/Mapとクラスのまとめ

コレクション-List/Set/Mapとクラスのまとめプログラミングの知識
プログラミングの知識

今回はJavaのコレクションについてのまとめと、よく使うクラスについて特徴をまとめていきます。

スポンサーリンク

コレクションクラスとは

コレクションとは、要素数が決まっていない複数の要素をまとめて処理することができるオブジェクトです。コレクションと似たものに配列がありますが、配列は要素数が不変であり後から要素を追加したりすることができません。

コレクションを操作するためのAPIコレクションフレームワークと呼ばれています。コレクションフレームワークには、それぞれ異なる特徴を持つインターフェイスがあります。インターフェイス毎に複数のクラスが実装されています。(ArrayListクラスなど)

ここでは代表的な3つのインターフェイスを取り上げます。

  • Listインターフェイス(要素の重複が可能・要素の順番を保持して格納する)
  • Setインターフェイス(要素の重複が不可能)
  • Mapインターフェイス(キーと値を関連付けて格納する)

これからインターフェイスと実装クラスを順に説明していきます。

Listインターフェイス

Listインターフェイスを実装するクラスとしてよく使われるものに、「ArrayList」「LinkedList」が存在します。

ArrayListクラス

ArrayListは配列と似たリスト構造を持っているため、インデックス値で要素に素早くアクセスできます。

  • 要素を追加するスピードが遅い
  • 要素にアクセスするスピードが速い

といった特徴があります。

LinkedListクラス

LinkedListは、要素同士を双方向のリンクで参照する集合です。そのため要素の挿入や削除はArrayListに比べて高速です。

  • 要素を追加するスピードが速い
  • 要素にアクセスするスピードが遅い

といった特徴を持ちます。

Setインターフェイス

Setインターフェイスを実装するクラスとしてよく使われるものに、「HashSet」「TreeSet」が存在します。

HashSetクラス

HashSetはハッシュ値を使うことで高速な操作性を実現しています。

  • 要素の順番が保持されない
  • 要素の重複は許されない

といった特徴があります。

TreeSetクラス

TreeSetはHashSetより低速ですが、自動的に要素がソートされる特徴を持ちます。そのままだと昇順でソートされますが、ソートの条件は指定することもできます。

  • 要素が自動的にソートされる
  • 要素の重複は許されない

といった特徴があります。

Mapインターフェイス

Mapインターフェイスを実装するクラスとしてよく使われるものに、「HashMap」「TreeMap」「LinkedHashMap」が存在します。

それぞれKey(キー)とValue(値)が一対一で対応しています。Keyが重複した場合、Valueは上書きされます。

HashMapクラス

HashMapはハッシュ値を使うことで高速に動作します。

  • KeyからValueを高速に検索できる
  • 要素の順番は保持されない

といった特徴があります。

TreeMapクラス

TreeMapは自動的に要素が昇順でソートされる特徴を持ちます。ソートの条件は指定することもできます。

  • 要素が自動的にソートされる

といった特徴があります。

LinkedHashMap

LinkedHashMapは要素の順番が追加した順番で保持されます。

  • 要素の順番が保持される

といった特徴があります。

まとめ

今回はコレクションでよく使われるインターフェイスと各実装クラスについてまとめました。

各インターフェイスとクラス毎に特徴が異なるので、用途に合わせて使うものを選択できますね。

スポンサーリンク
Dim雑記
タイトルとURLをコピーしました