Java の辞書
Java 言語では、ディクショナリは Map
インターフェイスと呼ばれるデータ構造を使用して表されます。Map
データ構造は、キーと値のペアでデータを表示するために使用されます。Map
は、すべてのキーと対応する値を追跡するインターフェイスです。ユーザーは、一意のキーに基づいて値を取得できます。Map
インターフェイスには、次のプロパティがあります。
Map
にあるすべてのキーは一意です。- 1つ以上の値に対応する一意のキーが存在する可能性があります。
- キーは、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
パッケージに含まれており、キーが値にマップされる方法を示しています。マップには複数の実装があります。つまり、次のとおりです。
HashMap
LinkedHashMap
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
Rashmi is a professional Software Developer with hands on over varied tech stack. She has been working on Java, Springboot, Microservices, Typescript, MySQL, Graphql and more. She loves to spread knowledge via her writings. She is keen taking up new things and adopt in her career.
LinkedIn