Java の連想配列

Mohammad Irfan 2023年10月12日
  1. Java で連想配列を使用する
  2. Java の連想配列の要約
  3. Java で連想配列を実装する
  4. Java で連想配列を作成する
  5. Java の連想配列に要素を追加する
  6. Java の連想配列の要素をトラバースする
  7. Java 8 で forEach() メソッドを使用して連想配列の要素をトラバースする
Java の連想配列

連想配列は、要素のセットをキーのペアで格納する配列の一種です。これは、キーと値のコレクションであり、キーは一意であり、1つの値に関連付けられています。

連想配列から要素にアクセスする必要がある場合は、配列の名前を呼び出して、アクセスしたい値のキーを渡す必要があります。

Java で連想配列を使用する

たとえば、ロール番号と学生のマークを格納する marks という名前の配列があります。

したがって、特定の学生のマークにアクセスする必要がある場合は、このマークのように呼び出すことができます。105 ここで、マークは配列の名前であり、105 は学生のロール番号であり、インデックス番号ではありません。Java 言語を使用している場合、配列では不可能です。

したがって、連想配列は Java をサポートしていませんが、HashMap を使用して簡単に実現できます。Java は連想配列をサポートしていませんが、マップを使用して実装できます。

Java の連想配列の要約

HashMap<String, String> hashmap = new HashMap<>();
// method to add the key,value pair in hashmap
hashmap.put("Key1", "Value1");
hashmap.put("Key2", "Value2");
hashmap.put("Key3", "Value3");
// and many more...
// get the value 1 and 2
System.out.println(hashmap.get("Key1"));
System.out.println(hashmap.get("Key2"));
// and many more...

Java で連想配列を実装する

Java で連想配列を実装するために、Map インターフェースの実装クラスである HashMap を使用しました。ステップバイステップで理解しましょう。

まず、HashMap をインポートして初期化します。つまり、次のステートメントを使用して HashMap のインスタンスを作成します。

import java.util.HashMap;
HashMap<String, String> hashmap = new HashMap<>();

次に、put() メソッドを使用して、キー値を HashMap に追加します。

hashmap.put("Key1", "Value1");

entrySet() メソッドを使用して HashMap を Set に変換し、重複するキーを削除します。

Set<Map.Entry<String, String> > set = map.entrySet();

Set を必要な配列である ArrayList に変換します。

List<Map.Entry<String, String>> list = new ArrayList<>(set);

Java で連想配列を作成する

この例では、HashMap クラスを使用して、Java で連想配列を実装しました。

ほら、キーと値のペア形式のデータが含まれており、getKey() メソッドを使用してキーにアクセスし、getValue() メソッドを使用して値にアクセスしました。

import java.io.*;
import java.util.*;
public class SimpleTesting {
  public static void main(String[] args) {
    HashMap<String, String> hashmap = new HashMap<>();
    hashmap.put("Virat", "Batsman");
    hashmap.put("Bumrah", "Bowler");
    hashmap.put("Jadeja", "All-rounder");
    hashmap.put("Pant", "Wicket-Keeper");

    Set<Map.Entry<String, String>> s = hashmap.entrySet();
    List<Map.Entry<String, String>> array = new ArrayList<>(s);
    for (int i = 0; i < array.size(); i++) {
      System.out.println(array.get(i).getKey() + " is " + array.get(i).getValue());
    }
  }
}

出力:

Pant is Wicket-Keeper
Jadeja is All-rounder
Bumrah is Bowler
Virat is Batsman

すでに説明したように、そのキーは一意である必要があります。連想配列に同じキーを挿入すると、key-value ペアの 1つが破棄されます。

次のコードに、2つの同じキーVirat を挿入しました。以下の例を参照してください。

import java.io.*;
import java.util.*;
public class SimpleTesting {
  public static void main(String[] args) {
    HashMap<String, String> hashmap = new HashMap<>();
    hashmap.put("Virat", "Batsman");
    hashmap.put("Bumrah", "Bowler");
    hashmap.put("Jadeja", "All-rounder");
    hashmap.put("Pant", "Wicket-Keeper");
    hashmap.put("Virat", "Captain");

    Set<Map.Entry<String, String>> s = hashmap.entrySet();
    List<Map.Entry<String, String>> array = new ArrayList<>(s);
    for (int i = 0; i < array.size(); i++) {
      System.out.println(array.get(i).getKey() + " is " + array.get(i).getValue());
    }
  }
}

出力:

Pant is Wicket-Keeper
Jadeja is All-rounder
Bumrah is Bowler
Virat is Captain

Java の連想配列に要素を追加する

put() メソッドを使用して、マップ内の配列に要素を追加できます。同様に、remove() メソッドを使用して配列から要素を削除できます。

size() メソッドを使用して、配列のサイズを確認できます。

import java.util.HashMap;
public class SimpleTesting {
  public static void main(String[] args) {
    HashMap<String, String> fruits = new HashMap<String, String>();
    fruits.put("Apple", "Red");
    fruits.put("Banana", "Yellow");
    fruits.put("Guava", "Green");
    fruits.put("Blackberries", "Purple");

    System.out.println("The Size of fruits Map is : " + fruits.size());
    // Remove Banana from the HashMap
    fruits.remove("Banana");
    // To find out the size of the Hashmap
    System.out.println("The Size of fruits Map is : " + fruits.size());
    // Check whether the key is present in the Hashmap or not
    String fruit_key = "Apple";
    if (fruits.containsKey(fruit_key)) {
      System.out.println("The colour of " + fruit_key + " is: " + fruits.get(fruit_key));
    } else {
      System.out.println("There is no entry for the fruit of " + fruit_key);
    }
  }
}

出力:

The Size of fruits Map is : 4
The Size of fruits Map is : 3
The colour of Apple is: Red

Java の連想配列の要素をトラバースする

for-each ループを使用して、連想配列をトラバースできます。HashMapjava.util パッケージに属しているため、foreach ループを使用してその要素を反復処理できます。

import java.util.HashMap;
import java.util.Iterator;
import java.util.Map;

public class SimpleTesting {
  public static void main(String[] args) {
    HashMap<String, String> fruits = new HashMap<String, String>();
    fruits.put("Apple", "Red");
    fruits.put("Banana", "Yellow");
    fruits.put("Guava", "Green");
    fruits.put("Blackberries", "Purple");
    System.out.println("The Size of fruits Map is : " + fruits.size());
    for (Map.Entry element : fruits.entrySet()) {
      String key = (String) element.getKey();
      System.out.println(key + " : " + element.getValue());
    }
  }
}

出力:

The Size of fruits Map is : 4
Guava : Green
Apple : Red
Blackberries : Purple
Banana : Yellow

Java 8 で forEach() メソッドを使用して連想配列の要素をトラバースする

Java 8 以降のバージョンを使用している場合は、forEach() メソッドを使用して配列要素をトラバースできます。forEach() メソッドには、引数として lambda 式が必要です。

import java.util.HashMap;
import java.util.Iterator;
import java.util.Map;

public class SimpleTesting {
  public static void main(String[] args) {
    HashMap<String, String> fruits = new HashMap<String, String>();
    fruits.put("Apple", "Red");
    fruits.put("Banana", "Yellow");
    fruits.put("Guava", "Green");
    fruits.put("Blackberries", "Purple");

    System.out.println("The Size of fruits Map is : " + fruits.size());
    fruits.forEach((k, v) -> System.out.println(k + " : " + v));
  }
}

出力:

The Size of fruits Map is : 4
Guava : Green
Apple : Red
Blackberries : Purple
Banana : Yellow

このチュートリアルでは、Java が技術的に連想配列をサポートしていないことを学習しましたが、HashMap を使用して簡単に実現できます。

関連記事 - Java Array