如何在 Java 中迭代 HashMap?
Java HashMap 集合使用 (鍵,值) 對來儲存資料。儘管它是非同步的,但它與 HashTable 相比。因此,多個執行緒可以訪問 HashMap 而不遇到任何問題。儘管 HashMap 允許儲存空鍵,但最多隻能有一個空鍵物件和無限多個空值。關於對映的順序,此類不提供任何保證。
鍵用於索引值。我們可以使用 HashMap 儲存唯一的鍵。如果我們嘗試插入一個重複的鍵,則相應鍵的元素將被替換。
不要忘記我們應該匯入 java.util.HashMap 包才能使用 HashMap。
使用的方法
您可以使用四種主要方法來迭代 HashMap:
在迭代器的幫助下迭代 HashMap EntrySet。
在 for-each 迴圈和 lambda 的幫助下迭代 HashMap
使用迭代器迭代 HashMap KeySet。
使用 Stream API 遍歷 HashMap。
方法 1:在迭代器的幫助下迭代 HashMap EntrySet
在這裡,我們將使用 getValue() 和 getKey() 函式來迭代 HashMap。這是一個示例實現。
entryset()
我們在這裡探討的程式碼首先建立一個 HashMap,然後向其中提供一些鍵值對。隨後,我們使用 for 迴圈中的 entrySet() 方法遍歷 HashMap
演算法
步驟 1 - 匯入所需的 Java 實用程式類。
步驟 2 - 宣告一個名為 Tutorialspoint 的公共類。
步驟 3 - 使用 String[] args 引數定義 main 方法。
步驟 4 - 建立一個名為 foodTable 的 HashMap 類的新例項,其鍵和值型別為 String。
步驟 5 - 使用 put 方法向 foodTable 新增元素。
步驟 6 - 啟動一個迴圈,使用 entrySet 方法迭代 foodTable 中的條目。
步驟 7 - 在每次迭代中,使用 set 變數檢索當前條目。
步驟 8 - 使用 System.out.println 列印當前條目的鍵值對。
步驟 9 - 結束迴圈、main 方法和 Tutorialspoint 類。
示例
import java.util.HashMap;
import java.util.Map;
public class Tutorialspoint{
public static void main(String[] args){
Map<String, String> foodTable
= new HashMap<String, String>();
// Incorporating elements to the adobe HashMap
foodTable.put("C", "C Language");
foodTable.put("R", "Ruby");
foodTable.put("J", "Java");
foodTable.put("P", "PHP");
// Iterating HashMap through for loop
for (Map.Entry<String, String> set :
foodTable.entrySet()) {
System.out.println(set.getKey() + " -> " + set.getValue());
}
}
}
輸出
P -> PHP R -> Ruby C -> C Language J -> Java
方法 2:在 for-each 迴圈和 Lambda 的幫助下迭代 HashMap
我們在此方法中使用 lambda 表示式,這些表示式自 Java 8 版以來即可使用。lambda 表示式對其輸入引數的操作會產生一個值。無需將每個鍵值對轉換為條目集即可使用 lambda 表示式解決此問題。
forEach()
此程式匯入所需的 Java 實用程式類,構建一個名為“map”的 HashMap 物件,用鍵值對新增它,然後使用 forEach() 函式迭代它。它在每次迭代中顯示公司名稱和相應的淨資產。
演算法
步驟 1 - 透過匯入所需的 Java 實用程式類(Map 和 HashMap)來開始程式執行。
步驟 2 - 建立一個名為“IterationInstance”的類。
步驟 3 - 在“IterationInstance”類中,定義“main”方法。
步驟 4 - 建立一個名為“map”的新 HashMap 物件,以儲存組織名稱及其各自的淨資產值。
步驟 5 - 現在,您可以使用“put”方法將條目合併到對映中。
步驟 6 - 使用“forEach”方法迭代對映中的條目。
步驟 7 - 在 lambda 表示式中,定義要對每個條目執行的行為:列印組織名稱及其淨資產。
步驟 8 - 執行 lambda 表示式,列印對映中每個條目的公司名稱和淨資產。
步驟 9 - 結束程式執行。
示例
import java.util.Map;
import java.util.HashMap;
public class IterationInstance {
public static void main(String[] arg) {
Map<String,String> map = new HashMap<String,String>();
map.put("Amazon", "$468 billion");
map.put("Apple", "$2.5 trillion");
//iteration over map with the help of forEach() method
map.forEach((k,v) -> System.out.println("Company Name: "+ k + ", Net Value is: " + v));
}
}
輸出
Company Name: Apple, Net Value is: $2.5 trillion Company Name: Amazon, Net Value is: $468 billion
方法 3:使用迭代器迭代 HashMap KeySet
這次,可以使用迭代器。由於 HashMap.entrySet() 提供了一個擴充套件 Collection 介面的集合,因此我們也可以使用使用 Map.entrySet().iterator 生成的 Iterator 例項。
While()
該程式碼建立一個 HashMap 物件並向其中提供鍵值對。然後,它遍歷 HashMap 並列印每個對的鍵和值。
演算法
步驟 1 - 從 Java 實用程式庫匯入必要的類。
步驟 2 - 然後,程式碼建立一個名為 intType 的 HashMap 物件,以儲存整數鍵和字串值。
步驟 3 - 程式碼使用 put() 方法向 HashMap 新增鍵值對。
步驟 4 - 然後,它透過在 HashMap 上呼叫 entrySet().iterator() 方法建立一個迭代器。
步驟 5 - 程式碼使用 while 迴圈和迭代器的 hasNext() 方法遍歷 HashMap。
步驟 6 - 它使用迭代器的 next() 方法接收下一個 HashMap 條目。
步驟 7 - 此程式碼然後使用 Map.Entry 物件的 getKey() 和 getValue() 方法檢索每個條目的鍵和值。
步驟 8 - 此程式碼然後使用 System.out.println() 方法列印鍵和值。
步驟 9 - 現在,重複步驟 5-8,直到 HashMap 中沒有其他條目。
示例
import java.util.HashMap;
import java.util.Iterator;
import java.util.Map;
import java.util.Map.Entry;
public class TLP {
// Main driver method
public static void main(String[] arguments){
// Generating Hash map
Map<Integer, String> intType
= new HashMap<Integer, String>();
// Incorporate data(Key-value pairs) into hashmap
intType.put(11, "Eleven");
intType.put(12, "Twelve");
intType.put(13, "Thirteen");
intType.put(14, "Fourteen");
// Iterator
Iterator<Entry<Integer, String> > new_Iterator
= intType.entrySet().iterator();
while (new_Iterator.hasNext()) {
Map.Entry<Integer, String> new_Map
= (Map.Entry<Integer, String>)
new_Iterator.next();
System.out.println(new_Map.getKey() + " = " + new_Map.getValue());
}
}
}
輸出
11 = Eleven 12 = Twelve 13 = Thirteen 14 = Fourteen
方法 4:利用 Stream API 迭代 HashMap
流 API 是處理專案集合的有效工具。它允許我們在不更改原始資料結構的情況下對資料執行操作。
entrySet().stream()
該程式碼建立一個 HashMap 以儲存整數鍵和相應的字串值。然後,它向對映中新增四個鍵值對,並使用流和 forEach 列印對映中的每個鍵值對。輸出顯示鍵及其相應的值。
演算法
步驟 1 - 建立一個名為 intType 的 HashMap 以儲存整數鍵和相應的字串值。
步驟 2 - 將鍵值對新增到 intType HashMap
步驟 3 - 使用 entrySet() 函式迭代 intType HashMap 中的每個條目,即鍵值對。
步驟 4 - 對於每個條目,顯示鍵及其相應的值。
步驟 5 - 最後,終止程式碼。
示例
import java.util.HashMap;
import java.util.Iterator;
import java.util.Map;
import java.util.Map.Entry;
public class TLP {
public static void main(String[] arguments){
Map<Integer, String> intType
= new HashMap<Integer, String>();
intType.put(1, "Apple");
intType.put(2, "Cherry");
intType.put(3, "Banana");
intType.put(4, "Berries");
intType.entrySet().stream().forEach(
input
-> System.out.println(input.getKey() + " = " + input.getValue())
);
}
}
輸出
1 = Apple 2 = Cherry 3 = Banana 4 = Berries
結論
在 Java 中遍歷 HashMap 是操作鍵值對時的一項常見任務。Java HashMap 提供了幾種迭代技術,例如迭代器、帶有 lambda 的 for-each 迴圈、帶有迭代器的鍵集和流 API。
資料結構
網路
關係資料庫管理系統
作業系統
Java
iOS
HTML
CSS
Android
Python
C 程式設計
C++
C#
MongoDB
MySQL
Javascript
PHP