HashMap 遍歷
HashMap 遍歷從大的方向來說,可分為以下 4 類:
- 迭代器(Iterator)方式遍歷;
- For Each 方式遍歷;
- Lambda 表達式遍歷(JDK 1.8+);
- Streams API 遍歷(JDK 1.8+)。
但每種類型下又有不同的實現方式,因此具體的遍歷方式又可以分為以下 7 種:
- 使用迭代器(Iterator)EntrySet 的方式進行遍歷;
- 使用迭代器(Iterator)KeySet 的方式進行遍歷;
- 使用 For Each EntrySet 的方式進行遍歷;
- 使用 For Each KeySet 的方式進行遍歷;
- 使用 Lambda 表達式的方式進行遍歷;
- 使用 Streams API 單線程的方式進行遍歷;
- 使用 Streams API 多線程的方式進行遍歷。
接下來我們來看每種遍歷方式的具體實現代碼。
1.迭代器 EntrySet
public class HashMapTest { public static void main(String[] args) { // 創建並賦值 HashMap Map<Integer, String> map = new HashMap(); map.put(1, "Java"); map.put(2, "JDK"); map.put(3, "Spring Framework"); map.put(4, "MyBatis framework"); map.put(5, "Java中文社群"); // 遍歷 Iterator<Map.Entry<Integer, String>> iterator = map.entrySet().iterator(); while (iterator.hasNext()) { Map.Entry<Integer, String> entry = iterator.next(); System.out.print(entry.getKey()); System.out.print(entry.getValue()); } } }
2.迭代器 KeySet
public class HashMapTest { public static void main(String[] args) { // 創建並賦值 HashMap Map<Integer, String> map = new HashMap(); map.put(1, "Java"); map.put(2, "JDK"); map.put(3, "Spring Framework"); map.put(4, "MyBatis framework"); map.put(5, "Java中文社群"); // 遍歷 Iterator<Integer> iterator = map.keySet().iterator(); while (iterator.hasNext()) { Integer key = iterator.next(); System.out.print(key); System.out.print(map.get(key)); } } }
3.ForEach EntrySet
public class HashMapTest { public static void main(String[] args) { // 創建並賦值 HashMap Map<Integer, String> map = new HashMap(); map.put(1, "Java"); map.put(2, "JDK"); map.put(3, "Spring Framework"); map.put(4, "MyBatis framework"); map.put(5, "Java中文社群"); // 遍歷 for (Map.Entry<Integer, String> entry : map.entrySet()) { System.out.print(entry.getKey()); System.out.print(entry.getValue()); } } }
4.ForEach KeySet
public class HashMapTest { public static void main(String[] args) { // 創建並賦值 HashMap Map<Integer, String> map = new HashMap(); map.put(1, "Java"); map.put(2, "JDK"); map.put(3, "Spring Framework"); map.put(4, "MyBatis framework"); map.put(5, "Java中文社群"); // 遍歷 for (Integer key : map.keySet()) { System.out.print(key); System.out.print(map.get(key)); } } }
5.Lambda
public class HashMapTest { public static void main(String[] args) { // 創建並賦值 HashMap Map<Integer, String> map = new HashMap(); map.put(1, "Java"); map.put(2, "JDK"); map.put(3, "Spring Framework"); map.put(4, "MyBatis framework"); map.put(5, "Java中文社群"); // 遍歷 map.forEach((key, value) -> { System.out.print(key); System.out.print(value); }); } }
6.Streams API 單線程
public class HashMapTest { public static void main(String[] args) { // 創建並賦值 HashMap Map<Integer, String> map = new HashMap(); map.put(1, "Java"); map.put(2, "JDK"); map.put(3, "Spring Framework"); map.put(4, "MyBatis framework"); map.put(5, "Java中文社群"); // 遍歷 map.entrySet().stream().forEach((entry) -> { System.out.print(entry.getKey()); System.out.print(entry.getValue()); }); } }
7.Streams API 多線程
public class HashMapTest { public static void main(String[] args) { // 創建並賦值 HashMap Map<Integer, String> map = new HashMap(); map.put(1, "Java"); map.put(2, "JDK"); map.put(3, "Spring Framework"); map.put(4, "MyBatis framework"); map.put(5, "Java中文社群"); // 遍歷 map.entrySet().parallelStream().forEach((entry) -> { System.out.print(entry.getKey()); System.out.print(entry.getValue()); }); } }