Java での Hashtable と Hashmap の違い

Mohammad Irfan 2023年10月12日
  1. HashtableHashMap
  2. Java で Hashtable を作成する
  3. Java で HashMap を作成する
  4. Java の HashMap に null を格納する
  5. Java の Hashtable に null を格納する
Java での Hashtable と Hashmap の違い

このチュートリアルでは、Java の HashtableHashMap の違いを紹介し、トピックを理解するためのサンプルコードもいくつか示します。

Hashtable は、キーと値のペアでデータを格納するために使用される Java コレクションフレームワークのクラスです。これは Java のレガシークラスであり、要素を格納するためのハッシュの概念に取り組んでいます。最新の Java バージョンでは、Hashtable は推奨されていません。むしろ、Hashtable よりも高度な HashMap を使用する必要があります。Java での Hashtable と HashMap の主な違いをまとめた以下の表を参照してください。

HashtableHashMap

Hashtable HashMap
同期 同期されていません
ヌルは許可されていません ヌルを許可します
レガシークラス レガシーではない
遅いです 速いです

上記の比較表では、Hashtable と HashMap の主な違いを明確に確認できます。それでは、いくつかの例を見てみましょう。

Hashtable は内部で同期されているため、HashtableHashMap よりもわずかに遅くなります。

Java で Hashtable を作成する

この例では、Hashtable を作成しています。これは Hashtable を作成する最も簡単な方法であり、コードに Hashtable をインポートするだけです。このクラスは、java.util パッケージにあります。以下の例を参照してください。

import java.util.Hashtable;

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

出力:

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

Java で HashMap を作成する

この例では、Java で HashMap を作成しています。これは HashMap を作成する最も簡単な方法であり、コードに HashMap をインポートするだけです。このクラスは、java.util パッケージにあります。以下の例を参照してください。

import java.util.HashMap;

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

出力:

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

Java の HashMap に null を格納する

HashMap を使用すると、null を格納できます。つまり、HashMap に null キーと複数の null 値を格納できます。このクラスは、コレクションに null がある場合に役立ちます。以下の例を参照してください。

import java.util.HashMap;

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

出力:

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

Java の Hashtable に null を格納する

Hashtable では null を格納できません。つまり、Hashtable に null を格納することはできません。コレクションに null がある場合、このクラスは役に立ちません。以下の例を参照してください。

null 値が格納されている場合、NullPointerException 例外がスローされます。

import java.util.Hashtable;

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

出力:

Exception in thread "main" java.lang.NullPointerException

関連記事 - Java Hashtable

関連記事 - Java HashMap