一、傳統遍歷方式
最直接的方法就是使用Iterator進行遍歷,代碼如下:
Map<String, Integer> map = new HashMap<>(); map.put("apple", 1); map.put("banana", 2); map.put("orange", 3); Iterator<Map.Entry<String, Integer>> iterator = map.entrySet().iterator(); while (iterator.hasNext()) { Map.Entry<String, Integer> entry = iterator.next(); System.out.println("key:" + entry.getKey() + " value:" + entry.getValue()); }
上述代碼中使用了Iterator遍歷Map,通過map.entrySet()方法獲取Map中所有Key-Value映射關係的Set集合,再通過Set的iterator()方法獲取其迭代器進行遍歷。
也可以使用foreach循環來遍歷Map:
Map<String, Integer> map = new HashMap<>(); map.put("apple", 1); map.put("banana", 2); map.put("orange", 3); for (Map.Entry<String, Integer> entry : map.entrySet()) { System.out.println("key:" + entry.getKey() + " value:" + entry.getValue()); }
上述代碼中使用了foreach循環遍歷Map,直接將Map中的Key-Value映射關係(entry)取出,進行操作。
傳統遍歷方式的優點是簡單易用,但是代碼較為繁瑣,並且Java8中有更加高效的遍歷方式。
二、Java8 Map遍歷方式
1. forEach + lambda表達式
Map<String, Integer> map = new HashMap<>(); map.put("apple", 1); map.put("banana", 2); map.put("orange", 3); map.forEach((key, value) -> System.out.println("key:" + key + " value:" + value));
上述代碼中使用了Map的forEach方法,該方法接收一個BiConsumer函數式介面作為參數。BiConsumer介面中的accept(T t, U u)方法可以接收兩個泛型參數,分別代表Map中的Key和Value。
可以通過lambda表達式來替代BiConsumer函數式介面,代碼更加簡潔明了。
2. stream + forEach + lambda表達式
Map<String, Integer> map = new HashMap<>(); map.put("apple", 1); map.put("banana", 2); map.put("orange", 3); map.entrySet().stream().forEach((entry) -> System.out.println("key:" + entry.getKey() + " value:" + entry.getValue()));
上述代碼中,map.entrySet()方法獲取Map中的所有Key-Value映射關係,再通過stream()方法獲取Stream,使用forEach方法進行遍歷。使用Stream可以更輕鬆地進行多條件篩選和排序等操作。
3. Map.Entry + forEach + lambda表達式
Map<String, Integer> map = new HashMap<>(); map.put("apple", 1); map.put("banana", 2); map.put("orange", 3); map.entrySet().stream().forEach(entry -> { String key = entry.getKey(); Integer value = entry.getValue(); System.out.println("key:" + key + " value:" + value); });
上述代碼中,使用了Map中的entrySet()方法獲取所有Key-Value映射關係的Set集合,並使用forEach方法進行遍歷。在forEach中,對於每一個entry,可以使用getKey()方法獲取Key,使用getValue()方法獲取Value。
可以根據需求選擇以上三種方式中的一種進行Map的遍歷,Java8提供了更加簡潔高效的遍歷方式,提高了編程效率。
原創文章,作者:IACHD,如若轉載,請註明出處:https://www.506064.com/zh-tw/n/325462.html