Java コレクションフレームワーク
1. コレクションフレームワーク
ArrayList、HashSet、HashMapなどのデータ構造を詳しく掘り下げる前に、これらすべてがより大きな仕組みである Java コレクションフレームワーク(Java Collections Framework / JCF) の一部であることを理解しておく必要があります。
Java コレクションフレームワークは、一連のインターフェース(List、Set、Map など)と、それらのインターフェースを実装する一連のクラス(ArrayList、HashSet、HashMap など)を提供します。
これらはすべて java.util パッケージに含まれています。これらを利用することで、標準化されたメソッドやパターンを用いて、データの保存、検索、ソート、整理をより簡単に行うことができるようになります。
ヒント: コレクションフレームワークを「ツールボックス」と考えてみてください。List のようなインターフェースは「ツールで何ができるか」を定義し、ArrayList のようなクラスは「実際に作業を行う具体的なツール」にあたります。
2. コレクションフレームワークの主要インターフェース
以下は、一般的なインターフェースと、それに対応するクラスの例です。
| インターフェース | 主要なクラス | 説明 |
|---|---|---|
| List | ArrayList, LinkedList | 順序が保持され、重複を許可するコレクション |
| Set | HashSet, TreeSet, LinkedHashSet | ユニーク(一意)な要素のコレクション |
| Map | HashMap, TreeMap, LinkedHashMap | ユニークな「キー」を持つ、キーと値のペアを保持 |
3. 実装クラスの概要
以下の表は、一般的なデータ構造クラスとその特性をまとめたものです。
| インターフェース | クラス | 説明 |
|---|---|---|
| List | ArrayList | サイズ変更可能な配列。順序を維持し、重複を許可する |
| List | LinkedList | 要素の挿入や削除操作が高速なリスト |
| Set | HashSet | 順序を保持しない、ユニークな要素のコレクション |
| Set | TreeSet | ユニークな要素をソートされた状態(自然順序)で保持 |
| Set | LinkedHashSet | 要素が挿入された順序を維持するセット |
| Map | HashMap | 特定の順序を持たずにキーと値のペアを保存 |
| Map | TreeMap | キーの自然順序に基づいてソートされたマップ |
| Map | LinkedHashMap | キーが挿入された順序を維持するマップ |
4. 適切なデータ構造の選定基準
開発においてどのクラスを使用すべきかは、以下のガイドラインを参考にしてください。
- 順序を重視し、重複を許可し、インデックスで要素にアクセスしたい場合は、
List系のクラスを使用します。 - ユニークな値のみを保存する必要がある場合は、
Set系のクラスを使用します。 - 「名前と電話番号」のように、キーと値のペアでデータを保存する必要がある場合は、
Map系のクラスを使用します。