Java中的Hashmap是什麼? 舉例說明

已發表: 2021-07-02

HashMap 是 Java 中的一個集合類。 您可以使用它來存儲鍵值對。 其性能取決於初始容量和負載係數。 HashMap 有多種方法可以讓你使用它的哈希表數據結構。

在接下來的文章中,我們將探索 HashMap 是什麼,並通過示例了解它的各種構造函數。

目錄

什麼是哈希映射?

HashMap 是一個基於 Map 的集合類。 我們用它來存儲鍵值對。 您將 HashMap Java 表示為 HashMap<K, V>,其中 K 代表 Key,V 代表 Value。

HashMap 類似於 Hashtable 類。 兩者的區別在於 HashMap 是不同步的,而 Hashtable 不是。 此外,與 Hashtable 不同,HashMap 允許空值和空鍵。

由於 HashMap 不是有序集合,因此它不會按照您插入的順序返回鍵和值。 此外,HashMap 不會對存儲的鍵和值進行排序。 如果要使用 HashMap 類及其方法,則必須導入 java.util.HashMap(或其超類)。

HashMap 為您提供了 Java 的 Map 接口的簡單實現。 您可以使用另一種類型的索引(例如整數)來訪問您通過 HashMap 存儲的鍵值對。 請記住,如果您使用重複鍵,它將替換相關鍵的元素。 此外,您只能使用一個空鍵對象; 但是,可以有任意數量的空值。

HashMap 實現了 Cloneable、Serializable、Map<K, V> 接口。 它擴展了 AbstractMap<K, V> 類,其直接子類是 PrinterStateReasons 和 LinkedHashMap。

HashMap的特點

以下是 HashMap 的主要功能:

  • 它是 java.util.package 的一個組件。
  • 您可以使用重複值,但 HashMap 不允許重複鍵。 這意味著一個鍵不能有多個值,但多個鍵可以有一個值。
  • 您只能使用一次空鍵,但可以使用各種空值。
  • HashMap 不保證地圖的順序。 因此,它不能保證訂單是否保持不變。
  • HashMap 與 Hashtable 非常相似,唯一的區別是 HashMap 是不同步的。
  • HashMap 實現了 Serializable 和 Cloneable 接口。

HashMap 構造函數

HashMap 中有四個構造函數:

1.HashMap()

HashMap() 是默認構造函數,它創建一個負載因子為 0.75 且初始容量為 16 的實例。

示例

// 展示 HashMap() 構造函數是如何工作的

導入java.io.*;

導入 java.util.*;

類 AddElementsToHashMap {

公共靜態無效主(字符串參數 [])

{

// 你不必提及

// 泛型類型兩次

HashMap<Integer, String> hm1 = new HashMap<>();

// 使用泛型初始化HashMap

HashMap<整數,字符串> hm2

= new HashMap<整數,字符串>();

// 使用 put 方法添加任意元素

hm1.put(1, “A”);

hm1.put(2, “B”);

hm1.put(3, “C”);

hm2.put(4, “D”);

hm2.put(5, “E”);

hm2.put(6, “F”);

System.out.println(“hm1的結果是:”

+ hm1);

System.out.println(“HashMap hm2的結果是:”

+ hm2);

}

}

輸出

hm1 的結果是:{1=A, 2=B, 3=C}

hm2 的結果是:{4=D, 5=E, 6=F}

2. HashMap(int initialCapacity)

HashMap(int initialCapacity) 將創建一個負載為 0.75 和特定初始容量的實例。

示例

// 展示 HashMap(int initialCapacity) 構造函數是如何工作的

導入java.io.*;

導入 java.util.*;

類 AddElementsToHashMap {

公共靜態無效主(字符串參數 [])

{

// 你不必提及

// 泛型類型兩次

HashMap<Integer, String> hm1 = new HashMap<>(10);

// 使用泛型初始化HashMap

HashMap<整數,字符串> hm2

= new HashMap<整數,字符串>(2);

// 使用 put 方法添加任意元素

hm1.put(1, “A”);

hm1.put(2, “B”);

hm1.put(3, “C”);

hm2.put(4, “D”);

hm2.put(5, “E”);

hm2.put(6, “F”);

System.out.println(“hm1的結果是:”

+ hm1);

System.out.println(“HashMap hm2的結果是:”

+ hm2);

}

}

輸出

hm1 的結果是:{1=A, 2=B, 3=C}

hm2 的結果是:{4=D, 5=E, 6=F}

3. HashMap(int initialCapacity, float loadFactor)

HashMap(int initialCapacity, float loadFactor) 生成具有特定負載因子和初始容量的實例。

示例

// 展示 HashMap(int initialCapacity, float loadFactor) 構造函數是如何工作的

導入java.io.*;

導入 java.util.*;

類 AddElementsToHashMap {

公共靜態無效主(字符串參數 [])

{

// 你不必提及

// 泛型類型兩次

HashMap<整數,字符串> hm1

= 新 HashMap<>(5, 0.75f);

// 使用泛型初始化HashMap

HashMap<整數,字符串> hm2

= new HashMap<整數,字符串>(3, 0.5f);

// 使用 put 方法添加元素

hm1.put(1, “A”);

hm1.put(2, “B”);

hm1.put(3, “C”);

hm2.put(4, “D”);

hm2.put(5, “E”);

hm2.put(6, “F”);

System.out.println(“hm1的結果是:”

+ hm1);

System.out.println(“HashMap hm2的結果是:”

+ hm2);

}

}

輸出

hm1 的結果是:{1=A, 2=B, 3=C}

hm2 的結果是:{4=D, 5=E, 6=F}

4. HashMap(地圖地圖)

HashMap(Map map) 將創建一個與您指定的映射具有相同映射的實例。

示例

// 展示 HashMap(Map map) 構造函數是如何工作的

導入java.io.*;

導入 java.util.*;

類 AddElementsToHashMap {

公共靜態無效主(字符串參數 [])

{

// 你不必提及

// 泛型類型兩次

Map<Integer, String> hm1 = new HashMap<>();

// 使用泛型初始化HashMap

HashMap<整數,字符串> hm2

= new HashMap<整數,字符串>(hml);

// 使用 put 方法添加任意元素

hm1.put(1, “A”);

hm1.put(2, “B”);

hm1.put(3, “C”);

hm2.put(4, “D”);

hm2.put(5, “E”);

hm2.put(6, “F”);

System.out.println(“hm1的結果是:”

+ hm1);

System.out.println(“HashMap hm2的結果是:”

+ hm2);

}

}

輸出

hm1 的結果是:{1=A, 2=B, 3=C}

hm2 的結果是:{4=D, 5=E, 6=F}

了解有關 Java 的更多信息

除了 HashMap,Java 還有很多類。 自己了解每個類的本質、它們的用途以及在 Java 中的集成是非常具有挑戰性的。 進行此過程的最佳方法是參加計算機科學課程。

參加專業課程將使您通過結構化的課程掌握必要的技能和概念。 此外,此類課程通過視頻、現場會議和在線講座提供身臨其境的學習體驗,使您更容易理解理論基礎知識。

您可以查看我們與 LJMU(英國利物浦約翰摩爾斯大學)和 IIIT-B(印度國際信息技術研究所)聯合提供的計算機科學理學碩士課程。 該課程涵蓋 500 多個小時的內容、10 多個現場講座和 30 多個案例研究。

這個為期 19 個月的課程承諾提供高度價值導向的全球學習體驗。 最大的附加值在於您可以與來自世界各地的同行建立聯繫和互動。 upGrad 擁有遍布 85 多個國家/地區的 40,000 多名付費全球學習者。 因此,您會接觸到新文化、新觀點和新觀點,從而拓寬您的整體視野。 不僅如此,您還接受了來自 LJMU 和 IIIT-B 的專家導師的培訓,他們提供專門和個性化的幫助來幫助您解決疑慮。

除了這些優勢之外,該計劃還將為您提供 360 度的職業幫助,包括行業指導、交流機會等等。

結論

在本文中,我們通過示例了解了 HashMap 是什麼,它的不同構造函數,以及如何實現它們。 HashMap 在 Java 中有大量的應用程序——您可以使用 HashMap 來添加、刪除它們,並根據需要管理它們。

您對 HashMap 指南有何看法? 在下面的評論部分分享它們。

提升自己並為未來做好準備

立即申請 LJMU 軟件工程課程表