Java でキーと値のペアの Map を作成する方法

JavaJavaBeginner
今すぐ練習

💡 このチュートリアルは英語版からAIによって翻訳されています。原文を確認するには、 ここをクリックしてください

はじめに

このチュートリアルでは、Java で Map データ構造を作成し、操作するプロセスを案内します。Map は Java の基本的なデータ構造で、キーと値のペアを効率的に格納し、取得することができます。このチュートリアルの最後まで進めると、Java アプリケーションで Map を作成、初期化、アクセス、操作する方法をしっかりと理解することができるようになります。


Skills Graph

%%%%{init: {'theme':'neutral'}}%%%% flowchart RL java(("Java")) -.-> java/DataStructuresGroup(["Data Structures"]) java(("Java")) -.-> java/ObjectOrientedandAdvancedConceptsGroup(["Object-Oriented and Advanced Concepts"]) java/DataStructuresGroup -.-> java/collections_methods("Collections Methods") java/ObjectOrientedandAdvancedConceptsGroup -.-> java/classes_objects("Classes/Objects") java/ObjectOrientedandAdvancedConceptsGroup -.-> java/oop("OOP") java/ObjectOrientedandAdvancedConceptsGroup -.-> java/hashmap("HashMap") java/ObjectOrientedandAdvancedConceptsGroup -.-> java/iterator("Iterator") subgraph Lab Skills java/collections_methods -.-> lab-413982{{"Java でキーと値のペアの Map を作成する方法"}} java/classes_objects -.-> lab-413982{{"Java でキーと値のペアの Map を作成する方法"}} java/oop -.-> lab-413982{{"Java でキーと値のペアの Map を作成する方法"}} java/hashmap -.-> lab-413982{{"Java でキーと値のペアの Map を作成する方法"}} java/iterator -.-> lab-413982{{"Java でキーと値のペアの Map を作成する方法"}} end

Map データ構造の理解

Java では、Map データ構造はキーと値のペアを格納し、取得することができる基本的なコレクションです。これは Java コレクションフレームワークの一部であり、様々なプログラミングシナリオで広く使用されています。

Map とは何か?

Map はキーと値のペアのコレクションを格納するオブジェクトです。Map 内の各キーは一意でなければならず、対応する値にアクセスするために使用されます。Map 内の値は重複していても構いませんが、キーは一意でなければなりません。

Map を使用する理由は何か?

一意の識別子(キー)をデータ(値)に関連付ける必要がある場合、Map は便利です。これは、多くのプログラミングタスクで一般的なことで、次のような例があります。

  • キャッシュまたはルックアップテーブル
  • 要素の出現頻度をカウントする
  • 設定情報を格納する
  • データベーステーブルを表す

Map の主要な特性

  • キーと値のペアMap はキーと値のペアのコレクションを格納します。各キーは一意であり、対応する値はそのキーに関連付けられています。
  • 一意のキーMap 内のキーは一意でなければなりません。既に存在するキーを持つ新しいキーと値のペアを追加しようとすると、新しい値が古い値を置き換えます。
  • 異種型Map 内のキーと値は異なるデータ型であっても構いません。たとえば、Map<String, Integer> のように、キーが文字列で値が整数である場合があります。
  • null キーと値Map は、具体的な実装に応じて、キーまたは値として null を持つことができます。
  • 順序付けと非順序付け:異なる Map の実装は、キーと値のペアに対して異なる順序付けの保証を提供します。たとえば、TreeMap はキーをソートされた順序で保持しますが、HashMap は特定の順序を保証しません。

Map データ構造の基本的な概念と特性を理解することは、Java プログラムで効果的に使用するために重要です。

Map の作成と初期化

Map の宣言

Java では、次の構文を使用して Map 変数を宣言できます。

Map<KeyType, ValueType> mapName = new MapImplementation<>();

ここで、KeyTypeValueType はそれぞれキーと値のデータ型で、MapImplementation は使用したい特定の Map の実装(HashMapTreeMapLinkedHashMap など)です。

Map の初期化

Java で Map を初期化する方法はいくつかあります。

  1. 空の Map

    Map<String, Integer> emptyMap = new HashMap<>();
  2. 初期容量を持つ Map

    Map<String, Integer> mapWithInitialCapacity = new HashMap<>(16);
  3. 初期容量と負荷係数を持つ Map

    Map<String, Integer> mapWithInitialCapacityAndLoadFactor = new HashMap<>(16, 0.75f);
  4. 初期のキーと値のペアを持つ Map

    Map<String, Integer> mapWithInitialPairs = new HashMap<>() {{
        put("apple", 1);
        put("banana", 2);
        put("cherry", 3);
    }};
  5. 別の Map からの Map

    Map<String, Integer> originalMap = new HashMap<>();
    // Populate the original map
    Map<String, Integer> newMap = new HashMap<>(originalMap);
  6. キーと値のペアのリストからの Map

    List<KeyValuePair<String, Integer>> pairs = Arrays.asList(
        new KeyValuePair<>("apple", 1),
        new KeyValuePair<>("banana", 2),
        new KeyValuePair<>("cherry", 3)
    );
    Map<String, Integer> mapFromList = pairs.stream()
       .collect(Collectors.toMap(KeyValuePair::getKey, KeyValuePair::getValue));

これらは Java で Map を作成し初期化する最も一般的な方法です。実装と初期化方法の選択は、具体的な要件とデータの特性によって異なります。

Map 要素のアクセスと操作

Map 要素のアクセス

Map を作成したら、次のメソッドを使用してその要素にアクセスできます。

  1. キーによる値の取得

    Map<String, Integer> fruitMap = new HashMap<>();
    // Populate the map
    Integer value = fruitMap.get("apple");
  2. キーが存在するかどうかの確認

    boolean containsKey = fruitMap.containsKey("banana");
  3. 値が存在するかどうかの確認

    boolean containsValue = fruitMap.containsValue(2);
  4. Map のエントリを繰り返し処理する

    for (Map.Entry<String, Integer> entry : fruitMap.entrySet()) {
        String key = entry.getKey();
        Integer value = entry.getValue();
        // Do something with the key and value
    }
  5. Map のキーを繰り返し処理する

    for (String key : fruitMap.keySet()) {
        // Do something with the key
    }
  6. Map の値を繰り返し処理する

    for (Integer value : fruitMap.values()) {
        // Do something with the value
    }

Map 要素の操作

次のメソッドを使用して Map の内容を変更することもできます。

  1. 新しいキーと値のペアを追加する

    fruitMap.put("orange", 4);
  2. 既存のキーの値を更新する

    fruitMap.put("apple", 5);
  3. キーと値のペアを削除する

    fruitMap.remove("banana");
  4. Map をクリアする

    fruitMap.clear();
  5. 値をマージする

    fruitMap.merge("apple", 2, Integer::sum);

これらのメソッドを使用すると、Map に格納されたキーと値のペアを効率的にアクセス、変更、操作することができます。

まとめ

この Java チュートリアルでは、キーと値のペアを格納し取得するための汎用的なデータ構造である Map を作成し操作する方法を学びました。Map を初期化し、その要素にアクセスして変更するための様々なメソッドを調べ、Java プログラミングにおける Map の力を活用する方法を学びました。この知識をもって、自信を持って Map を Java プロジェクトに組み込み、データ管理の効率と整理を向上させることができます。