public static void main(String[] args) { // 循環遍歷Map的4中方法
Map<Integer, Integer> map = new HashMap<Integer, Integer>(); map.put(1, 2); // 1. entrySet遍歷,在鍵和值都須要時使用(最經常使用)
for (Map.Entry<Integer, Integer> entry : map.entrySet()) { System.out.println("key = " + entry.getKey() + ", value = " + entry.getValue()); } // 2. 經過keySet或values來實現遍歷,性能略低於第一種方式 // 遍歷map中的鍵
for (Integer key : map.keySet()) { System.out.println("key = " + key); } // 遍歷map中的值
for (Integer value : map.values()) { System.out.println("key = " + value); } // 3. 使用Iterator遍歷
Iterator<Map.Entry<Integer, Integer>> it = map.entrySet().iterator(); while (it.hasNext()) { Map.Entry<Integer, Integer> entry = it.next(); System.out.println("key = " + entry.getKey() + ", value = " + entry.getValue()); } // 4. java8 Lambda // java8提供了Lambda表達式支持,語法看起來更簡潔,能夠同時拿到key和value, // 不過,經測試,性能低於entrySet,因此更推薦用entrySet的方式
map.forEach((key, value) -> { System.out.println(key + ":" + value); }); }
若是隻是獲取key,或者value,推薦使用keySet或者values方式;java
若是同時須要key和value推薦使用entrySet;微信
若是須要在遍歷過程當中刪除元素推薦使用Iterator;性能
若是須要在遍歷過程當中增長元素,能夠新建一個臨時map存放新增的元素,等遍歷完畢,再把臨時map放到原來的map中。測試
歡迎關注微信公衆號【Java典籍】,收看更多Java技術乾貨!spa
▼微信掃一掃下圖↓↓↓二維碼關注code