PR

Java:List、Set、MapJava(コレクションフレームワーク)を5分で総まとめ

Java

Javaのコレクションフレームワークとは、データを効率的に管理・操作するためのクラスとインターフェースの集合です。Javaの標準ライブラリの一部で、私たちが複数のデータを扱う際に非常に便利で頻繫に利用されます。

コレクションフレームワークはデータを効率的に管理するために設計されており、これはたくさんのデータを1つにまとめて整理し操作する際に役立ちます。例えば、買い物リストや学生名簿、電話帳などを管理する際に非常に役立つもので、これを知らないとJavaのコーディングの幅が非常に狭まってしまうでしょう。

というと難しく聞こえますが、実態は「インターフェース」と「クラス」です・・・!なので、クラスとインターフェースが何者か?を知っていれば難しくはありません。

参考 Javaのクラスとは? / Javaのインターフェースとは?

このページでは、Javaのコレクションフレームワークの使い方のそのコツを5分で1からわかりやすく初心者向けに解説します。

関連 Javaの1stステップ:基本的な構文ルールを1分で復習!

スポンサーリンク

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

Javaのコレクションフレームワークをすごくざっくり平易な言葉で説明すると「たくさんのデータをまとめて整理して管理するための便利な箱や引き出しのセット」だと言えます。これを使うことで、データを追加したり、取り出したり、探したりするのがとても簡単になるという優れもの。買い物リストや電話帳を作るのに役立つ道具だと思ってください。

で、大事なことは、結局のところコレクションフレームワークというのは、Javaが提供する出来合いのクラスの集合であるということ。

難しく考える必要はなくて、標準で提供されているクラスであること。そのクラスを使えば様々なデータの処理を簡単に行えるよ!ということを覚えておけばひとまずOKです。

コレクションフレームワークはJava標準で用意されているため、特別な設定なしにすぐに利用することができるのも大きなメリットの1つ。早速、それらのクラスの使い方を見ていきましょう。

List

データを順序付けて管理できる「List」というインターフェースから説明していきます。このインターフェースを実装したクラスを使うことで、データの追加や削除、取得を簡単に行うことができるようになります。

Listはインターフェースなので、我々がコーディングする際には、このインターフェースを実装したクラス(ArrayListLinkedList)を利用します。これらのクラスは、Listインターフェースが定義したメソッドを具体的に実現しています。

ArrayListの使い方

まず、ArrayListクラスを使ってリストを作成します。ArrayListはリストの実装クラスの1つで、配列を使ってデータを管理します。

参考 Javaの「配列」とは?

import java.util.ArrayList;

public class Main {
    public static void main(String[] args) {
        // ArrayListの作成(リストは順序を持つ)
        ArrayList<String> list = new ArrayList<>();

        // 要素の追加
        list.add("Apple");
        list.add("Banana");
        list.add("Cherry");

        // 要素の取得(インデックスを使う)
        System.out.println(list.get(1)); // 出力: Banana

        // 要素の削除
        list.remove("Apple");

        // 要素の数
        System.out.println(list.size()); // 出力: 2

        // 全要素の出力
        for (String fruit : list) {
            System.out.println(fruit);
        }
        // 出力:
        // Banana
        // Cherry
    }
}

ポイント ArrayListの主なメソッドとその使い方

メソッド名意味使用例
add(E e)要素をリストの末尾に追加するlist.add("Apple");
add(int index, E e)指定した位置に要素を挿入するlist.add(1, "Banana");
get(int index)指定した位置の要素を取得するString fruit = list.get(0);
set(int index, E e)指定した位置の要素を新しい要素に置き換えるlist.set(1, "Cherry");
remove(int index)指定した位置の要素を削除するlist.remove(0);
remove(Object o)指定した要素をリストから削除するlist.remove("Apple");
size()リストの要素数を取得するint size = list.size();
isEmpty()リストが空かどうかを判定するboolean empty = list.isEmpty();
contains(Object o)リストに指定した要素が含まれているかを判定するboolean contains = list.contains("Apple");
clear()リストの全要素を削除するlist.clear();
indexOf(Object o)指定した要素の最初の出現位置を返すint index = list.indexOf("Apple");
lastIndexOf(Object o)指定した要素の最後の出現位置を返すint lastIndex = list.lastIndexOf("Apple");
toArray()リストの全要素を配列に変換するObject[] array = list.toArray();
toArray(T[] a)指定した配列にリストの全要素を格納するString[] array = list.toArray(new String[0]);

注意しておきたいのが以下の部分。

        // ArrayListの作成(リストは順序を持つ)
        ArrayList<String> list = new ArrayList<>();

ここでの<>は「ダイヤモンド演算子」と呼ばれ、Javaのジェネリクスという機能を使っています。ジェネリクスというのはリストが特定のデータ型(この場合はString)のみを扱うということを指定するもので、必須ではありません。

が、ArrayListを利用する際には一般的に指定するものなので、そういうものだと覚えておきましょう。

コレクションフレームワークと言ってもただのクラスです。ので、クラスインターフェースの概念や記述方法を知っていれば理解できるはずです。↑のサンプルコードが理解できないという方は要チェック。

  1. Listインターフェース
    • リストとしての基本的な操作を定義する設計図
  2. ArrayListクラス
    • Listインターフェースを実装した具体的なクラス。データを配列で管理する。
  3. ジェネリクス
    • リストの要素の型を指定するための機能。ArrayList<String> は文字列のみを扱うリストを意味する。

Set

Setは、重複しない要素の集まりを管理するためのコレクション。要素の順序は保証されません。Listと異なり、同じ要素を複数回追加することはできず、重複を許さないため要素が一意であることを保証する場合に便利です。

Setインターフェースを実装するクラスには、HashSetLinkedHashSetTreeSetなどがありますが、ここでは最も一般的に使用されるHashSetを例に説明します。

HashSetの使い方

HashSetクラスを使ってセットを作成します。HashSetはハッシュテーブルを使って要素を管理するため、要素の追加、削除、検索が高速です。

import java.util.HashSet;

public class Main {
    public static void main(String[] args) {
        // HashSetの作成
        HashSet<String> set = new HashSet<>();

        // 要素の追加
        set.add("Apple");
        set.add("Banana");
        set.add("Cherry");

        // 重複する要素は追加されない
        set.add("Apple");

        // 要素の数
        System.out.println(set.size()); // 出力: 3

        // 要素が含まれているかを判定
        System.out.println(set.contains("Banana")); // 出力: true

        // 要素の削除
        set.remove("Cherry");

        // 全要素の出力
        for (String fruit : set) {
            System.out.println(fruit);
        }
        // 出力:
        // Apple
        // Banana

        // 全要素の削除
        set.clear();
        System.out.println(set.size()); // 出力: 0
    }
}

ポイント HashSetの主なメソッドとその使い方・意味

メソッド名意味使用例
add(E e)要素をセットに追加するset.add("Apple");
remove(Object o)指定した要素をセットから削除するset.remove("Apple");
size()セットの要素数を取得するint size = set.size();
isEmpty()セットが空かどうかを判定するboolean empty = set.isEmpty();
contains(Object o)セットに指定した要素が含まれているかを判定するboolean contains = set.contains("Apple");
clear()セットの全要素を削除するset.clear();
toArray()セットの全要素を配列に変換するObject[] array = set.toArray();
toArray(T[] a)指定した配列にセットの全要素を格納するString[] array = set.toArray(new String[0]);
iterator()セットの要素を繰り返し処理するためのイテレータを取得するIterator<String> it = set.iterator();
  1. Setインターフェース
    • 重複しない要素の集まりを管理するための基本的な操作を定義する設計図
  2. HashSetクラス
    • Setインターフェースを実装した具体的なクラス。ハッシュテーブルを使って要素を管理するため、高速な操作が可能
  3. 重複しない要素
    • Setは重複しない要素のみを扱うため、データが一意であることを保証したい場合に便利

Map

Mapは、キーと値のペアでデータを管理するためのコレクション。キーは一意で、同じキーに対して複数の値を持つことはできません。Mapを使用することで、キーを使って迅速に対応する値を取得することができます。Mapインターフェースを実装するクラスには、HashMapTreeMapLinkedHashMapなどがありますが、ここでも一般的に使用されるHashMapを例に説明します。

HashMapの使い方

import java.util.HashMap;

public class Main {
    public static void main(String[] args) {
        // HashMapの作成
        HashMap<String, Integer> map = new HashMap<>();

        // 要素の追加
        map.put("Apple", 100);
        map.put("Banana", 150);
        map.put("Cherry", 200);

        // 要素の取得
        System.out.println(map.get("Banana")); // 出力: 150

        // 要素の更新
        map.put("Banana", 180);
        System.out.println(map.get("Banana")); // 出力: 180

        // 要素の削除
        map.remove("Apple");

        // 要素の数
        System.out.println(map.size()); // 出力: 2

        // 要素が含まれているかを判定
        System.out.println(map.containsKey("Cherry")); // 出力: true

        // 全要素の出力
        for (String key : map.keySet()) {
            System.out.println(key + ": " + map.get(key));
        }
        // 出力:
        // Banana: 180
        // Cherry: 200

        // 全要素の削除
        map.clear();
        System.out.println(map.size()); // 出力: 0
    }
}

ポイント HashMapの主なメソッドとその使い方・意味

メソッド名意味使用例
put(K key, V value)キーと値のペアをマップに追加するmap.put("Apple", 100);
get(Object key)指定したキーに対応する値を取得するint value = map.get("Apple");
remove(Object key)指定したキーとその値をマップから削除するmap.remove("Apple");
size()マップの要素数を取得するint size = map.size();
isEmpty()マップが空かどうかを判定するboolean empty = map.isEmpty();
containsKey(Object key)指定したキーがマップに含まれているかを判定するboolean contains = map.containsKey("Apple");
containsValue(Object value)指定した値がマップに含まれているかを判定するboolean contains = map.containsValue(100);
clear()マップの全要素を削除するmap.clear();
keySet()マップ内の全てのキーをセットとして返すSet<String> keys = map.keySet();
values()マップ内の全ての値をコレクションとして返すCollection<Integer> values = map.values();
entrySet()マップ内の全てのキーと値のペアをセットとして返すSet<Map.Entry<String, Integer>> entries = map.entrySet();
  1. Mapインターフェース
    • キーと値のペアを管理するための基本的な操作を定義する設計図
  2. HashMapクラス
    • Mapインターフェースを実装した具体的なクラス。ハッシュテーブルを使ってキーと値を管理するため、高速な操作が可能
  3. キーと値のペア
    • Mapはキーと値のペアを管理し、キーを使って迅速に値を取得することができる

このWebサイトは現役のエンジニアが以下3点を目的として運営しています。

  1. 勉強:一度理解した内容を忘れないように。
    → アウトプットは「最強のインプット」である! 
  2. 備忘:忘れたとしても後から見返せるように。
    → 未来の自分への「お手紙」を書いています。 
  3. 共有:〇〇ってこうだったんだ!の感動をシェアできるように。
    → あなたの知識は誰かにとっての「価値ある情報」です。 

副業ブログの始め方はこちらから

スポンサーリンク
Java
シェアする
ビズドットオンラインをフォローする
タイトルとURLをコピーしました