Contents

Java HashMap 使用 Foreach 迴圈

測試

這篇文章主要是關於如何在 Java 中使用 foreach 迴圈來遍歷 HashMap。我整理一些常用方法,讓我們可以快速使用。

HashMap 是 Java 中的一種資料結構,它允許我們存儲鍵-值對。每個鍵都是唯一的,並且每個鍵都對應一個值。這使得我們可以快速地查找、添加和刪除元素。

基本使用

在 Java 中,我們可以使用 foreach 迴圈來遍歷 HashMap。以下是一些例子:
參考來源: dictionary - How do I efficiently iterate over each entry in a Java Map? - Stack Overflow

1
2
3
4
5
6
7
8
9
Map<String, String> map = new HashMap<>();
map.put("Apple", "蘋果");
map.put("Banana", "香蕉");
map.put("Cherry", "櫻桃");

// 使用 foreach 迴圈遍歷 HashMap
for (Map.Entry<String, String> entry : map.entrySet()) {
    System.out.println(entry.getKey() + " : " + entry.getValue());
}

On Java 10+:

1
2
3
for (var entry : map.entrySet()) {
    System.out.println(entry.getKey() + "/" + entry.getValue());
}

在這個例子中,我們首先創建了一個 HashMap,然後使用 put 方法添加了一些元素。然後,我們使用 foreach 迴圈來遍歷 HashMap。在每次迴圈中,我們都會獲得一個 Map.Entry 對象,該對象代表 HashMap 中的一個鍵值對。我們可以使用 getKey 和 getValue 方法來獲取鍵和值。

在 Java 8 中,我們還可以使用 lambda 表達式和 forEach 方法來遍歷 HashMap:

1
map.forEach((key, value) -> System.out.println(key + " : " + value));

在這個例子中,我們使用了一個 lambda 表達式,該表達式接受兩個參數(鍵和值),並將它們打印出來。forEach 方法會對 HashMap 中的每個元素執行這個 lambda 表達式。

遍歷 HashMap 是一種常見的操作,理解如何在 Java 中進行遍歷對於寫出高效的程式碼非常重要。

遍歷 HashMap

以下參考: Java Map and forEach | 詹姆士的筆記本 - 點部落
這段程式碼首先創建了一個 HashMap,並使用 put 方法添加了一些元素。然後,它展示了三種遍歷 HashMap 的方法:

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
		Map<String,Double> map = new HashMap<>();
		map.put("2330",309D);
		map.put("2317", 91.4);
		map.put("3008", 4345D);
		
		//iterator
		Set<String> set = map.keySet();
		Iterator<String> it = set.iterator();
		while (it.hasNext()) {
			String key = it.next();
			System.out.printf("key:%s,value:%s\n", key, map.get(key));
		}
		
		//forEach
		for (Map.Entry<String, Double> entry : map.entrySet()) {
			System.out.println("key:" + entry.getKey() + ",value:" + entry.getValue());
		}

		//lamda forEach
		map.forEach((u, v) -> System.out.println("key:" + u + ",value:" + v));
		

使用 Iterator 遍歷 HashMap

  1. 使用 Iterator:首先,我們使用 keySet 方法獲取 HashMap 中所有鍵的 Set。然後,我們創建一個 Iterator 來遍歷這個 Set。在每次迴圈中,我們使用 Iterator 的 next 方法獲取一個鍵,然後使用 HashMap 的 get 方法獲取對應的值。
1
2
3
4
5
6
		Set<String> set = map.keySet();
		Iterator<String> it = set.iterator();
		while (it.hasNext()) {
			String key = it.next();
			System.out.printf("key:%s,value:%s\n", key, map.get(key));
		}

使用 foreach 迴圈遍歷 HashMap

  1. 使用 foreach 迴圈:我們也可以使用 foreach 迴圈來遍歷 HashMap。在每次迴圈中,我們都會獲得一個 Map.Entry 對象,該對象代表 HashMap 中的一個鍵值對。我們可以使用 getKey 和 getValue 方法來獲取鍵和值。
1
2
3
for (Map.Entry<String, Double> entry : map.entrySet()) {
    System.out.println("key:" + entry.getKey() + ",value:" + entry.getValue());
}

使用 lambda 表達式和 forEach 方法遍歷 HashMap

  1. 使用 lambda 表達式和 forEach 方法:在 Java 8 中,我們可以使用 lambda 表達式和 forEach 方法來遍歷 HashMap。這個 lambda 表達式接受兩個參數(鍵和值),並將它們打印出來。
1
map.forEach((u, v) -> System.out.println("key:" + u + ",value:" + v));

這三種方法各有優缺點。使用 Iterator 可以在遍歷過程中修改 HashMap,但程式碼較為冗長。使用 foreach 迴圈和 forEach 方法可以簡化程式碼,但在遍歷過程中不能修改 HashMap。