Javaの基礎Java

Javaの基礎:コレクションを解説(List,Map,Set)

Javaコレクション解説ページのアイキャッチ画像 Javaの基礎

この記事では、Javaのコレクションフレームワークの基本と、主要なコレクションクラスの使い方を学びます。特に、ArrayList、HashMap、HashSetの基本操作に焦点を当て、実際のプログラム例を通じてそれぞれの特徴と使用方法を理解できます。

はじめに

この記事のコードをコピペしてEclipseで出力結果を確認してみよう

Javaのコレクションの基本

Javaのコレクションフレームワークは、データの集合を扱うための標準化されたクラス群です。主に以下の種類があります:

  1. List: 順序付けられた要素のコレクション。重複を許可します。
  2. Set: 重複を許可しない要素のコレクション。
  3. Map: キーと値のペアを保持するコレクション。

これらのインターフェースには様々な実装クラスがあります。例えば:

インターフェース実装クラス特徴
ListArrayList• 内部で配列を使用
• ランダムアクセスが高速
• 末尾への追加・削除が効率的
ListLinkedList• 双方向リンクリストで実装
• 先頭・末尾への追加・削除が高速
• 中間要素へのアクセスは比較的遅い
SetHashSet• ハッシュテーブルを使用
• 追加・削除・検索が高速(平均O(1))
• 要素の順序は保証されない
SetTreeSet• 赤黒木を使用
• 要素が順序付けられる
• 操作の性能はO(log n)
MapHashMap• ハッシュテーブルを使用
• キーと値のペアの操作が高速(平均O(1))
• キーの順序は保証されない
MapTreeMap• 赤黒木を使用
• キーが順序付けられる
• 操作の性能はO(log n)

これらの実装クラスは、それぞれ異なる特性を持っており、使用するシナリオに応じて適切なものを選択することが重要です。例えば、頻繁なランダムアクセスが必要な場合はArrayList、要素の順序が重要な場合はTreeSetやTreeMapが適しています。

プログラム例1: ArrayListの基本操作

ArrayListExample.java

Java
import java.util.ArrayList;
import java.util.List;

public class ArrayListExample {
    public static void main(String[] args) {
        // ArrayListの作成
        List<String> fruits = new ArrayList<>();

        // 要素の追加
        fruits.add("りんご");
        fruits.add("バナナ");
        fruits.add("オレンジ");

        // 要素の取得と表示
        System.out.println("最初の果物: " + fruits.get(0));

        // リストの全要素を表示
        System.out.println("全ての果物:");
        for (String fruit : fruits) {
            System.out.println(fruit);
        }

        // 要素の削除
        fruits.remove("バナナ");

        // リストのサイズを表示
        System.out.println("果物の数: " + fruits.size());
    }
}

出力結果:

最初の果物: りんご
全ての果物:
りんご
バナナ
オレンジ
果物の数: 2

ArrayListExample.javaの解説

  • インポート文
Java
import java.util.ArrayList;
import java.util.List;

ArrayListList インターフェースをインポートしています。

  • クラス定義
Java
public class ArrayListExample {
    // ...
}

ArrayListExample という名前の公開クラスを定義しています。

  • main メソッド
Java
public static void main(String[] args) {
    // ...
}

これはプログラムのエントリーポイントです。

  • ArrayList の作成
Java
List<String> fruits = new ArrayList<>();

String 型の要素を持つ ArrayList を作成しています。List インターフェースを使用して宣言することで、より柔軟なコードになります。

  • 要素の追加
Java
fruits.add("りんご");
fruits.add("バナナ");
fruits.add("オレンジ");

add() メソッドを使用して、リストに要素を追加しています。

  • 要素の取得と表示
Java
System.out.println("最初の果物: " + fruits.get(0));

get() メソッドを使用して、指定したインデックス(この場合は0)の要素を取得しています。

  • リストの全要素を表示
Java
System.out.println("全ての果物:");
for (String fruit : fruits) {
    System.out.println(fruit);
}

拡張for文(foreach ループ)を使用して、リストの全要素を順番に取得し表示しています。

  • 要素の削除
Java
fruits.remove("バナナ");

remove() メソッドを使用して、指定した要素をリストから削除しています。

  • リストのサイズを表示
Java
System.out.println("果物の数: " + fruits.size());

size() メソッドを使用して、リストの現在の要素数を取得し表示しています。

このコードは、Javaの ArrayList クラスの基本的な操作を示しています:

  • リストの作成
  • 要素の追加 (add())
  • 要素の取得 (get())
  • リストの反復処理(拡張for文)
  • 要素の削除 (remove())
  • リストのサイズ取得 (size())

ArrayList は、動的に要素を追加・削除できる可変長の配列として機能します。
これは、Java Collections Framework の一部であり、データの格納と操作に広く使用されています。
ArrayList は、要素へのランダムアクセスが速く、リストの末尾への追加操作も効率的ですが、
中間への挿入や削除は比較的遅いという特徴があります。

プログラム例2: HashMapの基本操作

HashMapExample.java

Java
import java.util.HashMap;
import java.util.Map;

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

        // キーと値のペアを追加
        ages.put("Alice", 25);
        ages.put("Bob", 30);
        ages.put("Charlie", 35);

        // 特定のキーの値を取得
        System.out.println("Bobの年齢: " + ages.get("Bob"));

        // マップの全エントリーを表示
        System.out.println("全員の年齢:");
        for (Map.Entry<String, Integer> entry : ages.entrySet()) {
            System.out.println(entry.getKey() + ": " + entry.getValue());
        }

        // キーの存在確認
        String name = "David";
        if (ages.containsKey(name)) {
            System.out.println(name + "の年齢: " + ages.get(name));
        } else {
            System.out.println(name + "は登録されていません。");
        }

        // エントリーの削除
        ages.remove("Alice");

        // マップのサイズを表示
        System.out.println("登録人数: " + ages.size());
    }
}

出力結果:

Bobの年齢: 30
全員の年齢:
Bob: 30
Alice: 25
Charlie: 35
Davidは登録されていません。
登録人数: 2

HashMapExample.javaの解説

  • インポート文
Java
import java.util.HashMap;
import java.util.Map;

HashMap クラスと Map インターフェースをインポートしています。

  • クラス定義
Java
public class HashMapExample {
    // ...
}

HashMapExample という名前の公開クラスを定義しています。

  • main メソッド
Java
public static void main(String[] args) {
    // ...
}

これはプログラムのエントリーポイントです。

  • HashMap の作成
Java
Map<String, Integer> ages = new HashMap<>();

String 型のキーと Integer 型の値を持つ HashMap を作成しています。Map インターフェースを使用して宣言することで、より柔軟なコードになります。

  • キーと値のペアを追加
Java
ages.put("Alice", 25);
ages.put("Bob", 30);
ages.put("Charlie", 35);

put() メソッドを使用して、キーと値のペアをマップに追加しています。

  • 特定のキーの値を取得
Java
System.out.println("Bobの年齢: " + ages.get("Bob"));

get() メソッドを使用して、指定したキー(”Bob”)に対応する値を取得しています。

  • マップの全エントリーを表示
Java
System.out.println("全員の年齢:");
for (Map.Entry<String, Integer> entry : ages.entrySet()) {
    System.out.println(entry.getKey() + ": " + entry.getValue());
}

entrySet() メソッドを使用してマップの全エントリーを取得し、拡張for文で反復処理しています。

  • キーの存在確認
Java
String name = "David";
if (ages.containsKey(name)) {
    System.out.println(name + "の年齢: " + ages.get(name));
} else {
    System.out.println(name + "は登録されていません。");
}

containsKey() メソッドを使用して、特定のキーがマップに存在するかを確認しています。

  • エントリーの削除
Java
ages.remove("Alice");

remove() メソッドを使用して、指定したキーとそれに対応する値をマップから削除しています。

  • マップのサイズを表示
Java
System.out.println("登録人数: " + ages.size());

size() メソッドを使用して、マップの現在のエントリー数を取得し表示しています。

このコードは、Javaの HashMap クラスの基本的な操作を示しています:

  • マップの作成
  • キーと値のペアの追加 (put())
  • 値の取得 (get())
  • マップの反復処理 (entrySet())
  • キーの存在確認 (containsKey())
  • エントリーの削除 (remove())
  • マップのサイズ取得 (size())

HashMap は、キーと値のペアを格納するためのデータ構造で、キーを使って効率的に値を検索できます。これは、Java Collections Framework の一部であり、キーと値のペアを扱う多くのアプリケーションで広く使用されています。
HashMap は、キーの重複を許さず、順序を保証しないという特徴があります。

プログラム例3: HashSetの基本操作

HashSetExample.java

Java
import java.util.HashSet;
import java.util.Set;

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

        // 要素の追加
        uniqueColors.add("赤");
        uniqueColors.add("青");
        uniqueColors.add("緑");
        uniqueColors.add("赤");  // 重複する要素を追加

        // Setの内容を表示
        System.out.println("ユニークな色:");
        for (String color : uniqueColors) {
            System.out.println(color);
        }

        // 要素数を表示
        System.out.println("色の数: " + uniqueColors.size());

        // 要素の存在確認
        String colorToCheck = "黄";
        if (uniqueColors.contains(colorToCheck)) {
            System.out.println(colorToCheck + "は含まれています。");
        } else {
            System.out.println(colorToCheck + "は含まれていません。");
        }

        // 要素の削除
        uniqueColors.remove("青");

        // 削除後のSetの内容を表示
        System.out.println("青を削除後のユニークな色:");
        for (String color : uniqueColors) {
            System.out.println(color);
        }
    }
}

出力結果:

ユニークな色:



色の数: 3
黄は含まれていません。
青を削除後のユニークな色:

HashSetExample.javaの解説

  • インポート文
Java
import java.util.HashSet;
import java.util.Set;

HashSet クラスと Set インターフェースをインポートしています。

  • クラス定義
Java
public class HashSetExample {
    // ...
}

HashSetExample という名前の公開クラスを定義しています。

  • main メソッド
Java
public static void main(String[] args) {
    // ...
}

これはプログラムのエントリーポイントです。

  • HashSet の作成
Java
Set<String> uniqueColors = new HashSet<>();

String 型の要素を持つ HashSet を作成しています。Set インターフェースを使用して宣言することで、より柔軟なコードになります。

  • 要素の追加
Java
uniqueColors.add("赤");
uniqueColors.add("青");
uniqueColors.add("緑");
uniqueColors.add("赤");  // 重複する要素を追加

add() メソッドを使用して、要素をセットに追加しています。重複する要素(”赤”)は無視されます。

  • セットの内容を表示
Java
System.out.println("ユニークな色:");
for (String color : uniqueColors) {
    System.out.println(color);
}

拡張for文を使用して、セットの全要素を順番に取得し表示しています。

  • 要素数を表示
Java
System.out.println("色の数: " + uniqueColors.size());

size() メソッドを使用して、セットの現在の要素数を取得し表示しています。

  • 要素の存在確認
Java
String colorToCheck = "黄";
if (uniqueColors.contains(colorToCheck)) {
    System.out.println(colorToCheck + "は含まれています。");
} else {
    System.out.println(colorToCheck + "は含まれていません。");
}

contains() メソッドを使用して、特定の要素がセットに存在するかを確認しています。

  • 要素の削除
Java
uniqueColors.remove("青");

remove() メソッドを使用して、指定した要素をセットから削除しています。

  • 削除後のセットの内容を表示
Java
System.out.println("青を削除後のユニークな色:");
for (String color : uniqueColors) {
    System.out.println(color);
}

要素を削除した後のセットの内容を再度表示しています。

このコードは、Javaの HashSet クラスの基本的な操作を示しています:

  • セットの作成
  • 要素の追加 (add())
  • セットの反復処理(拡張for文)
  • 要素数の取得 (size())
  • 要素の存在確認 (contains())
  • 要素の削除 (remove())

HashSet は、重複を許さない要素の集合を表現するデータ構造です。
これは、Java Collections Framework の一部であり、ユニークな要素の集合を扱う多くのアプリケーションで使用されます。HashSet は、要素の追加、削除、検索が高速であるという特徴がありますが、要素の順序は保証されません。

まとめ

  • ArrayListは動的に拡張可能な配列を実装し、要素の追加、取得、削除が容易です。
  • HashMapはキーと値のペアを保存し、高速な検索と更新が可能です。
  • HashSetは重複を許さない要素の集合を管理し、ユニークな値の保存に適しています。
  • これらのコレクションクラスは、java.utilパッケージに含まれており、様々なデータ構造を効率的に扱うことができます。

Javaのコレクションフレームワークを理解することで、効率的なデータ管理と操作が可能になります。ArrayListは順序付けられたデータの管理に、HashMapは関連データの高速な検索に、HashSetはユニークな要素の集合管理に適しています。これらのコレクションクラスを適切に使い分けることで、より柔軟で効率的なプログラミングが可能になります。

未経験でもWEBスキルを取得したい方
  • Javaコース
    Javaプログラミングを基礎から応用まで、体系的に学べる実践的なカリキュラムが特徴です。「マインクラフト」を通じてJavaの基本文法とフレームワークの概念を学びます。また、実際のプロジェクト開発を通じて、データベース連携やWebアプリケーション開発のスキルを身につけることができます。

コメント

タイトルとURLをコピーしました