Java中的Hashmap是什麼? 舉例說明
已發表: 2021-07-02HashMap 是 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 指南有何看法? 在下面的評論部分分享它們。