Javaのコレクションフレームワーク|List, Set, Mapの使い方

先生

Javaのコレクション、使いこなせてる?List, Set, Mapの違いと具体的な使用例を徹底解説!

Javaコレクションフレームワークとは?

Javaコレクションフレームワークは、データの集合を効率的に扱うためのインターフェースとクラスを提供します。これにより、配列よりも柔軟で、様々なデータ構造を簡単に利用できるようになります。List、Set、Mapがその主要な構成要素です。

コレクションフレームワークを理解することで、データの格納、検索、操作をより効率的に行えるようになり、Javaプログラミングのスキルアップに繋がります。

List(リスト)の使い方

Listは、要素に順序があり、重複を許容するコレクションです。ArrayListとLinkedListが代表的な実装クラスです。

ArrayListは、内部に配列を持っており、要素へのアクセスが高速です。一方、LinkedListは、要素が双方向リストで繋がっており、要素の挿入や削除が高速です。

import java.util.ArrayList;
import java.util.List;
public class ListExample {
    public static void main(String[] args) {
        // ArrayListの作成
        List<String> list = new ArrayList<>();
        // 要素の追加
        list.add("Apple");
        list.add("Banana");
        list.add("Orange");
        // 要素の取得
        String fruit = list.get(0); // Apple
        System.out.println(fruit);
        // 要素の削除
        list.remove(1); // Bananaを削除
        // リストのサイズ
        int size = list.size(); // 2
        System.out.println(size);
        // リストのループ処理
        for (String s : list) {
            System.out.println(s);
        }
    }
}

Listは、データの順序を保持したい場合や、同じデータを複数格納したい場合に適しています。

Set(セット)の使い方

Setは、要素の重複を許容しないコレクションです。HashSetとTreeSetが代表的な実装クラスです。

HashSetは、内部にハッシュテーブルを持っており、要素の追加や検索が高速です。一方、TreeSetは、要素がソートされた状態で格納されます。

import java.util.HashSet;
import java.util.Set;
public class SetExample {
    public static void main(String[] args) {
        // HashSetの作成
        Set<String> set = new HashSet<>();
        // 要素の追加
        set.add("Apple");
        set.add("Banana");
        set.add("Orange");
        set.add("Apple"); // 重複は無視される
        // セットのサイズ
        int size = set.size(); // 3
        System.out.println(size);
        // 要素の存在確認
        boolean contains = set.contains("Banana"); // true
        System.out.println(contains);
        // セットのループ処理
        for (String s : set) {
            System.out.println(s);
        }
    }
}

Setは、重複するデータを排除したい場合に適しています。

Map(マップ)の使い方

Mapは、キーと値のペアを格納するコレクションです。HashMapとTreeMapが代表的な実装クラスです。

HashMapは、内部にハッシュテーブルを持っており、キーによる値の検索が高速です。一方、TreeMapは、キーがソートされた状態で格納されます。

import java.util.HashMap;
import java.util.Map;
public class MapExample {
    public static void main(String[] args) {
        // HashMapの作成
        Map<String, Integer> map = new HashMap<>();
        // 要素の追加
        map.put("Apple", 100);
        map.put("Banana", 200);
        map.put("Orange", 150);
        // キーによる値の取得
        int price = map.get("Banana"); // 200
        System.out.println(price);
        // キーの存在確認
        boolean containsKey = map.containsKey("Apple"); // true
        System.out.println(containsKey);
        // マップのループ処理
        for (Map.Entry<String, Integer> entry : map.entrySet()) {
            String key = entry.getKey();
            Integer value = entry.getValue();
            System.out.println(key + ": " + value);
        }
    }
}

Mapは、キーと値を関連付けて管理したい場合に適しています。例えば、商品名と価格、IDとオブジェクトなどを紐付ける場合に使用します。

参考リンク

まとめ

Javaコレクションフレームワークは、List、Set、Mapといった様々なデータ構造を提供し、効率的なデータ管理を可能にします。それぞれの特徴を理解し、適切なコレクションを選択することで、より効率的なプログラミングを実現できます。これらのコレクションはJava開発において非常に重要な役割を果たすため、しっかりとマスターしましょう。