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

使い分け早見表

目的使うべきコレクション
順番通りに保持+重複OKList(ArrayListなど)
重複を排除したいSet(HashSetなど)
キーに対応する値を保存したいMap(HashMapなど)
ソートされた状態で保持したいTreeSet / TreeMap

まとめ

項目ListSetMap
順序ありなし(実装依存)キーで管理
重複許可不可キー:不可、値:可
代表例ArrayListHashSetHashMap
主な用途順番付きの一覧一意な集合対応表(辞書)