Java 字典

Rashmi Patidar 2023年10月12日
Java 字典

在 Java 語言中,字典使用稱為 Map 介面的資料結構表示。Map 資料結構用於以鍵值對的形式呈現資料。Map 是一個跟蹤所有鍵和相應值的介面。使用者可以根據唯一鍵檢索值。Map 介面包含以下屬性:

  1. Map 中的所有鍵都是唯一的。
  2. 可以有一個唯一鍵對應一個或多個值。
  3. 鍵是非空的實體。

下面的程式碼塊演示了在 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"));
  }
}

除了 Collection 框架層次結構之外,Map 是一個單獨存在的介面。

Map 存在於 java.util 包中,顯示瞭如何將鍵對映到值。一個對映可以有多種實現,它們是:

  1. HashMap
  2. LinkedHashMap
  3. 雜湊表

每個的用法可以根據使用者對實現的需求而有所不同。

在上面的程式碼片段中,使用了 HashMap 實現。它是 Java 語言中預設且廣泛使用的類。所有三種型別之間的區別定義如下。

HashMap 是在 Java 1.2 版本中引入的,而 Hashtable 是一個遺留類。它是執行緒安全的,因此允許在多個執行緒之間進行併發操作,從而保持程式碼的一致性。但是 HashMap 不是執行緒安全的並且不允許併發。

由於 HashMap 的執行緒安全特性,它的效能比 Hashtable 更快。此外,HashMap 是快速失敗的,並且當它的例項一次被多個執行緒操作時會丟擲 ConcurrencyException。相比之下,Hashtable 似乎是安全的。LinkedHashMap 的用例駐留在使用者想要儲存插入順序時。

Map 例項是使用上面程式碼塊中的 HashMap 類建立的。getput 等操作用於儲存和檢索例項中的特定值。put 方法有兩個引數,即鍵和它的值。

在內部,如果鍵存在於 Map 物件中,則首先使用 containsKey() 函式對其進行評估。如果計算結果為真,則鍵的當前值將替換為新值。如果具有給定鍵的 Map 不支援定義的操作,則該方法將丟擲 UnsupportedOperationException

ClassCastException 如果鍵或值阻止鍵儲存,NullPointerException 如果指定的鍵或值是 null 並且 Map 不允許 null 鍵或值。IllegalArgumentException 如果鍵或值的某些屬性阻止其儲存在 Map 中。

一旦鍵被插入到 Map 中,就會使用 get 函式檢索它。get 函式採用一個作為唯一鍵的引數。當鍵不合適或指定的鍵為 null 時,它會丟擲 ClassCastExceptionNullPointerException

下面是使用 HashMap 類的 Map 介面的輸出。

Dictionary in Java Using HashMap Letters with alphabetical Order with key B
作者: Rashmi Patidar
Rashmi Patidar avatar Rashmi Patidar avatar

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