Java Gold SE11対策:List・Set・Mapの違いと徹底比較!

List・Set・Mapの違いと使い分けを完全整理!
Javaのコレクションは非常に便利ですが、種類が多く、違いや使い分けに迷うこともあります。
Java Gold SE11の試験でも、これらのコレクションの「特徴」「使い分け」「挙動の違い」が頻出です。
本記事では、代表的なコレクションである List / Set / Map の違いを、わかりやすく整理していきます。
目次
コレクションって何?
コレクションとは、複数のデータをまとめて扱うための入れ物(コンテナ)です。
java.util パッケージの中にあり、以下のような種類に分かれます:
- List:順序あり・重複可
- Set:順序なし・重複不可
- Map:キーと値のペア
試験では、「何を使うべきか?」という観点で問われることが多く、違いを明確にしておくことが重要です。
List の特徴:順序あり・重複OK
List は 順序を保持し、重複も許す コレクションです。
List<String> list = new ArrayList<>();
list.add(“A”);
list.add(“B”);
list.add(“A”); // 重複OK
実装クラスの違い
クラス | 特徴 |
ArrayList | 配列ベースで高速(検索に強い) |
LinkedList | 双方向リンク構造(挿入・削除に強い) |
Vector | 同期処理あり(古い) |
試験での注目ポイント
- List.get(int index) で要素を順番に取得できる
- ArrayList と LinkedList の使い分け
- for-each, for, Iterator のループ処理の書き方
Set の特徴:重複なし・順序なし(基本)
Set は 重複を許さないコレクション。基本的に順序は保証されません。
Set<String> set = new HashSet<>();
set.add(“A”);
set.add(“B”);
set.add(“A”); // これは無視される
実装クラスの違い
クラス | 特徴 |
HashSet | 高速。順序保証なし |
LinkedHashSet | 挿入順を保持 |
TreeSet | 自然順序または比較順序でソート |
試験での注目ポイント
- 要素の追加時に重複がどう扱われるか
- ソートされた順序になる TreeSet
- null の扱い(HashSetはOK、TreeSetはNG)
Map の特徴:キーと値のペア
Map は Key-Value のペア構造。キーは重複不可、値は重複可。
Map<String, Integer> map = new HashMap<>();
map.put(“apple”, 100);
map.put(“orange”, 120);
map.put(“apple”, 150); // キーが重複 → 上書きされる
実装クラスの違い
クラス | 特徴 |
HashMap | 高速。順序保証なし |
LinkedHashMap | 挿入順を保持 |
TreeMap | キーの順序でソート |
試験での注目ポイント
- 同じキーに対して値が上書きされる
- map.get(“key”) の挙動と、containsKey の使い分け
- Map は Collection インタフェースを継承していない
ソート・順序の違い:実装クラスで挙動が変わる!
試験では、どの実装を使うかで順序がどう変わるか も問われやすいです。
クラス名 | 挿入順 | ソート順 |
ArrayList | ○ | ✕(手動) |
LinkedList | ○ | ✕ |
HashSet | ✕ | ✕ |
LinkedHashSet | ○ | ✕ |
TreeSet | ✕ | ○ |
HashMap | ✕ | ✕ |
LinkedHashMap | ○ | ✕ |
TreeMap | ✕ | ○ |
使い分け早見表
目的 | 使うべきコレクション |
順番通りに保持+重複OK | List(ArrayListなど) |
重複を排除したい | Set(HashSetなど) |
キーに対応する値を保存したい | Map(HashMapなど) |
ソートされた状態で保持したい | TreeSet / TreeMap |
まとめ
項目 | List | Set | Map |
順序 | あり | なし(実装依存) | キーで管理 |
重複 | 許可 | 不可 | キー:不可、値:可 |
代表例 | ArrayList | HashSet | HashMap |
主な用途 | 順番付きの一覧 | 一意な集合 | 対応表(辞書) |