Java における hashmap と map の違い

Mohammad Irfan 2023年10月12日
  1. Java の Map インターフェース
  2. Java の HashMap クラス
  3. Java でオブジェクトを保持するために Map 参照を使用する
  4. Java でオブジェクトを保持するために Map リファレンスを使用する
Java における hashmap と map の違い

このチュートリアルでは、Java の MapHashMap の主な違いを紹介します。

Java では、Map はキーと値のペアでデータを格納するために使用されるインターフェースですが、HashMapMap インターフェースの実装クラスです。Java には、データをキーと値のペアに格納するための Map インターフェイスを実装するいくつかのクラス(TreeHashMapLinkedHashMap)があります。いくつかの例を見てみましょう。

Java の Map インターフェース

Map インターフェイスだけを使用してデータを保持することはできませんが、その実装クラスのオブジェクトを作成してから、Map 参照を使用してオブジェクトを保持することはできます。ここでは、HashMap クラスを使用してデータを格納し、Map インターフェイスを使用してこのクラスの参照を保持します。以下の例を参照してください。

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

public class SimpleTesting {
  public static void main(String[] args) {
    Map<String, Integer> map = new HashMap<>();
    map.put("One", 1);
    map.put("Two", 2);
    map.put("Three", 3);
    System.out.println(map);
  }
}

出力:

{One=1, Two=2, Three=3}

Java の HashMap クラス

HashMapMap インターフェースの実装クラスです。したがって、これを使用して、キーと値のペアのコレクションを作成できます。以下の例を参照してください。

import java.util.HashMap;

public class SimpleTesting {
  public static void main(String[] args) {
    HashMap<String, Integer> map = new HashMap<>();
    map.put("One", 1);
    map.put("Two", 2);
    map.put("Three", 3);
    System.out.println(map);
  }
}

出力:

{One=1, Two=2, Three=3}

Java でオブジェクトを保持するために Map 参照を使用する

Map はインターフェースであるため、HashMapTreeMap などの実装クラスの参照を保持するために使用できます。TreeMap または HashMap オブジェクトを Map インターフェースに保持できます。以下の例を参照してください。

import java.util.HashMap;
import java.util.Map;
import java.util.TreeMap;

public class SimpleTesting {
  public static void main(String[] args) {
    Map<String, Integer> map = new HashMap<>();
    map.put("One", 1);
    map.put("Two", 2);
    map.put("Three", 3);
    System.out.println(map);
    Map<String, Integer> tmap = new TreeMap<>(map);
    System.out.println(tmap);
  }
}

出力:

{One=1, Two=2, Three=3}
{One=1, Three=3, Two=2}

Java でオブジェクトを保持するために Map リファレンスを使用する

これは、実装クラスを操作するときに Map リファレンスを使用する重要な例です。Map オブジェクトを引数として取るメソッドがあります。したがって、呼び出し時に、HashMapHashTable などの任意のクラスのオブジェクトを渡すことができます。以下の例を参照してください。

import java.util.HashMap;
import java.util.LinkedHashMap;
import java.util.Map;
import java.util.TreeMap;

public class SimpleTesting {
  static void printMap(Map<String, Integer> map) {
    for (String key : map.keySet()) {
      System.out.println(key + ":" + map.get(key));
    }
  }
  public static void main(String[] args) {
    HashMap<String, Integer> hashmap = new HashMap<>();
    hashmap.put("One", 1);
    hashmap.put("Two", 2);
    hashmap.put("Three", 3);
    printMap(hashmap);
    TreeMap<String, Integer> tmap = new TreeMap<>(hashmap);
    printMap(tmap);
    LinkedHashMap<String, Integer> lmap = new LinkedHashMap<>(hashmap);
    printMap(lmap);
  }
}

以下のようにコードを実行します。

Java SimpleTesting 10 20

出力:

10
20

関連記事 - Java Map

関連記事 - Java HashMap