Javaのコレクション (List, Set, Map) の使い方と特徴を学ぶ

1. Javaのコレクションとは?

コレクション (Collection) は、Javaのjava.utilパッケージに用意されている、複数のデータを効率的に格納・操作するためのフレームワーク。
今回は代表的な ListSetMap の3種類から、それぞれ特定の目的に応じた機能を提供します。(厳密にはMapはCollectionインターフェースを実装していませんが、Javaコレクションフレームワークの一部として位置づけられる。)


2. コレクションの種類と特徴

コレクションの種類クラス特徴順序重複スレッドセーフ
ListArrayList, LinkedList, Vector, Stack順序あり重複許可× (ArrayList), 〇 (Vector)
SetHashSet, LinkedHashSet, TreeSet順序なし重複不可× (HashSet), 〇 (LinkedHashSet)××
MapHashMap, LinkedHashMap, TreeMap, Hashtableキーと値のペア、キーは一意で重複しない△ (LinkedHashMap: 順序保持)×× (HashMap), 〇 (Hashtable)

3. List(リスト)とは?

Listは、順序を保持し、重複する要素を格納できるコレクションです。

主なクラス

  1. ArrayList
    • 最もよく使われるリスト。
    • ランダムアクセスが速いが、挿入・削除は遅い。
  2. LinkedList
    • 要素の挿入・削除が速い。
    • ランダムアクセスは遅い。
  3. Vector
    • ArrayListのスレッドセーフ版。
    • 同時アクセスが必要な場合に使用。

使い方例: ArrayList

import java.util.ArrayList;

public class ListExample {
    public static void main(String[] args) {
        ArrayList<String> list = new ArrayList<>();
        list.add("りんご");
        list.add("バナナ");
        list.add("みかん");

        for (String item : list) {
            System.out.println(item);
        }
    }
}

実行結果

りんご
バナナ
みかん

4. Set(セット)とは?

Setは、順序を保証しないが、重複を許さないコレクションです。

主なクラス

  1. HashSet
    • 順序を保持しない高速なセット。
    • 一意の要素のみ格納。
  2. LinkedHashSet
    • 挿入した順序を保持するセット。
  3. TreeSet
    • 自然順序(昇順)でソートされるセット。

使い方例: HashSet

import java.util.HashSet;

public class SetExample {
    public static void main(String[] args) {
        HashSet<String> set = new HashSet<>();
        set.add("りんご");
        set.add("バナナ");
        set.add("りんご"); // 重複は無視される

        for (String item : set) {
            System.out.println(item);
        }
    }
}

実行結果

りんご
バナナ

5. Map(マップ)とは?

Mapは、キーと値のペア(key-valueペア)でデータを格納するコレクションです。

主なクラス

  1. HashMap
    • 順序を保証しないマップ。
  2. LinkedHashMap
    • 挿入した順序を保持。
  3. TreeMap
    • キーが昇順でソートされる。
  4. Hashtable
    • スレッドセーフなマップ(非推奨)。

使い方例: HashMap

import java.util.HashMap;

public class MapExample {
    public static void main(String[] args) {
        HashMap<String, Integer> map = new HashMap<>();
        map.put("りんご", 100);
        map.put("バナナ", 150);
        map.put("みかん", 80);

        for (String key : map.keySet()) {
            System.out.println(key + "の値段: " + map.get(key));
        }
    }
}

実行結果

りんごの値段: 100
バナナの値段: 150
みかんの値段: 80

6. コレクションの使い分け

使用シーン最適なコレクション理由
順序を保持したいArrayList順序を保持しつつ、重複する要素も格納できる。
データの追加/削除が頻繁LinkedList挿入と削除が効率的。
重複を許さないデータを管理HashSet一意のデータを管理する場合に最適。
データの順序を保持しつつ重複を許さないLinkedHashSetデータの順序を保持しつつ、重複のない要素を管理できる。
キーと値のペアでデータを管理HashMapキーを使ってデータを効率的に検索可能。
データをソートしたいTreeMap自然順序でソートされたデータを保持できる。

7. まとめ

  • List: 順序を保持し、重複を許す(ArrayList, LinkedList)。
  • Set: 順序を保証せず、重複を許さない(HashSet, TreeSet)。
  • Map: キーと値のペアでデータを管理(HashMap, TreeMap)。

良かったらフォローお願いします

コメントを残す

メールアドレスが公開されることはありません。 が付いている欄は必須項目です