Java アドバンス

Java コレクションフレームワーク

1. コレクションフレームワーク

ArrayListHashSetHashMapなどのデータ構造を詳しく掘り下げる前に、これらすべてがより大きな仕組みである Java コレクションフレームワーク(Java Collections Framework / JCF) の一部であることを理解しておく必要があります。

Java コレクションフレームワークは、一連のインターフェースListSetMap など)と、それらのインターフェースを実装する一連のクラスArrayListHashSetHashMap など)を提供します。

これらはすべて java.util パッケージに含まれています。これらを利用することで、標準化されたメソッドやパターンを用いて、データの保存、検索、ソート、整理をより簡単に行うことができるようになります。

ヒント: コレクションフレームワークを「ツールボックス」と考えてみてください。
List のようなインターフェースは「ツールで何ができるか」を定義し、ArrayList のようなクラスは「実際に作業を行う具体的なツール」にあたります。

2. コレクションフレームワークの主要インターフェース

以下は、一般的なインターフェースと、それに対応するクラスの例です。

インターフェース主要なクラス説明
ListArrayList, LinkedList順序が保持され、重複を許可するコレクション
SetHashSet, TreeSet, LinkedHashSetユニーク(一意)な要素のコレクション
MapHashMap, TreeMap, LinkedHashMapユニークな「キー」を持つ、キーと値のペアを保持

3. 実装クラスの概要

以下の表は、一般的なデータ構造クラスとその特性をまとめたものです。

インターフェースクラス説明
ListArrayListサイズ変更可能な配列。順序を維持し、重複を許可する
ListLinkedList要素の挿入や削除操作が高速なリスト
SetHashSet順序を保持しない、ユニークな要素のコレクション
SetTreeSetユニークな要素をソートされた状態(自然順序)で保持
SetLinkedHashSet要素が挿入された順序を維持するセット
MapHashMap特定の順序を持たずにキーと値のペアを保存
MapTreeMapキーの自然順序に基づいてソートされたマップ
MapLinkedHashMapキーが挿入された順序を維持するマップ

4. 適切なデータ構造の選定基準

開発においてどのクラスを使用すべきかは、以下のガイドラインを参考にしてください。

  • 順序を重視し、重複を許可し、インデックスで要素にアクセスしたい場合は、List 系のクラスを使用します。
  • ユニークな値のみを保存する必要がある場合は、Set 系のクラスを使用します。
  • 「名前と電話番号」のように、キーと値のペアでデータを保存する必要がある場合は、Map 系のクラスを使用します。