HOWTO · Java

Java の辞書

この記事では、Java で辞書を使用する方法を紹介します。

このページの内容

Java 言語では、ディクショナリは Map インターフェイスと呼ばれるデータ構造を使用して表されます。Map データ構造は、キーと値のペアでデータを表示するために使用されます。Map は、すべてのキーと対応する値を追跡するインターフェイスです。ユーザーは、一意のキーに基づいて値を取得できます。Map インターフェイスには、次のプロパティがあります。

  1. Map にあるすべてのキーは一意です。
  2. 1つ以上の値に対応する一意のキーが存在する可能性があります。
  3. キーは、null 以外のエンティティです。

以下は、Java 言語での辞書または Map の使用を示すコードブロックです。

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

public class Dictionary {
  public static void main(String[] args) {
    System.out.println("Dictionary in Java");
    System.out.println("Using HashMap ");
    Map<String, String> map = new HashMap<>();
    map.put("1", "Letters with alphabetical Order with key A");
    map.put("2", "Letters with alphabetical Order with key B");
    System.out.println(map.get("2"));
  }
}

Map は、Collection フレームワーク階層とは別に、個別に存在するインターフェイスです。

Map は java.util パッケージに含まれており、キーが値にマップされる方法を示しています。マップには複数の実装があります。つまり、次のとおりです。

  1. HashMap
  2. LinkedHashMap
  3. Hashtable

それぞれの使用法は、実装に対するユーザーのニーズに基づいて変化する可能性があります。

上記のコードスニペットでは、HashMap 実装が使用されています。これは、Java 言語で広く使用されているデフォルトのクラスです。3つのタイプすべての違いを以下に定義します。

HashMap は Java 1.2 バージョンで導入されましたが、Hashtable はレガシークラスです。スレッドセーフであるため、コードの一貫性を維持しながら、複数のスレッド間での同時操作が許可されます。ただし、HashMap はスレッドセーフではなく、同時実行は許可されません。

HashMap のスレッドセーフな性質により、Hashtable よりもパフォーマンスが高速です。さらに、HashMap はフェイルファストであり、インスタンスが一度に複数のスレッドによって操作されると、ConcurrencyException をスローします。それとは対照的に、Hashtable はフェイルセーフのようです。LinkedHashMap のユースケースは、ユーザーが挿入順序を保存したい場合に存在します。

Map インスタンスは、上記のコードブロックの HashMap クラスを使用して作成されます。get や put などの操作は、インスタンスから特定の値を保存および取得するために使用されます。put メソッドは、キーとその値の 2つのパラメーターを取ります。

内部的には、containsKey() 関数を使用して、キーがマップオブジェクトに存在するかどうかが最初に評価されます。true と評価された場合、キーの現在の値が新しい値に置き換えられます。定義された操作が指定されたキーの Map によってサポートされない場合、メソッドは UnsupportedOperationException をスローします。

キーまたは値がキーの保存を妨げる場合は ClassCastException、指定されたキーまたは値が null であり、Map が null キーまたは値を許可しない場合は NullPointerException。キーまたは値の一部のプロパティにより、Map に格納できない場合は、IllegalArgumentException。

キーが Map に挿入されると、get 関数を使用して取得されます。get 関数は、一意のキーである単一のパラメーターを取ります。キーが不適切な場合、または指定されたキーが null の場合、ClassCastException と NullPointerException をスローします。

以下は、HashMap クラスを使用したマップインターフェイスの出力です。

Dictionary in Java Using HashMap Letters with alphabetical Order with key B