Java中Map的三種遍歷方式:keySet、 entrySet、forEach

前言

最近在看《阿里巴巴Java開發手冊(華山版)》,看到了關於Map的遍歷方式,手冊上寫的很詳細,我這裏用代碼再來展示一遍。

代碼

	public static void main(String[] args) {
		Map<String, String> hm = new HashMap<String, String>();
		hm.put("a", "1");
		hm.put("b", "2");
		
		// 1. keySet
		for (String key : hm.keySet()) {
			System.out.println(key + ": " + hm.get(key));
		}
		System.out.println("-----------");
		
		// 2. entrySet
		for (Entry<String, String> entry : hm.entrySet()) {
			System.out.println(entry.getKey() + ": " + entry.getValue());
		}
		System.out.println("-----------");
		
		// 3. forEach
		hm.forEach((key, value) -> {
			System.out.println(key + ": " + value);
		});
	}

運行結果:
在這裏插入圖片描述

說明(來自阿里巴巴Java開發手冊):

  • keySet 其實是遍歷了 2 次,一次是轉爲 Iterator 對象,另一次是從 hashMap 中取出 key 所對應的 value。
  • 而 entrySet 只是遍歷了一次就把 key 和 value 都放到了 entry 中,效率更高。
  • 如果是 JDK8,使用 Map.forEach 方法。

所以,推薦使用entrySet,如果是JDK8,則推薦forEach。

完!

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章