方式分类

HashMap大致可分为下列4类遍历方式:

  1. Iterator遍历
  2. ForEach遍历
  3. Lambda表达式遍历
  4. StreamAPI遍历

根据每种类型不同的实现方式,又可以分为下列7种:
HashMap的7种遍历方式 - 图1

具体实现

Iterator遍历

EntrySet方式

  1. public class IterateHashMapExample {
  2. public static void main(String[] args) {
  3. //使用 Iterator 遍历 HashMap EntrySet
  4. Map<Integer,String> coursesMap = new HashMap<Integer,String>();
  5. coursesMap.put(1, "C");
  6. coursesMap.put(2, "C++");
  7. coursesMap.put(3, "Java");
  8. coursesMap.put(4, "Spring Framework");
  9. coursesMap.put(5, "Hibernate ORM framework");
  10. Iterator<Entry<Integer, String>> iterator = coursesMap.entrySet().iterator();
  11. while (iterator.hasNext()) {
  12. Entry<Integer, String> entry = iterator.next();
  13. System.out.println(entry.getKey());
  14. System.out.println(entry.getValue());
  15. }
  16. }
  17. }

Output:

1
C
2
C++
3
Java
4
Spring Framework
5
Hibernate ORM framework

KeySet方式

public class IterateHashMapExample {  
    public static void main(String[] args) {
        //使用 Iterator 遍历 HashMap KeySet
        Map<Integer,String> coursesMap = new HashMap<Integer,String>();
        coursesMap.put(1, "C");
        coursesMap.put(2, "C++");
        coursesMap.put(3, "Java");
        coursesMap.put(4, "Spring Framework");
        coursesMap.put(5, "Hibernate ORM framework");

        Iterator <Integer> iterator = coursesMap.keySet().iterator();
        while (iterator.hasNext()) {
            Integer key = iterator.next();
            System.out.println(key);
            System.out.println(coursesMap.get(key));
        }
    }  
}

Output:

1
C
2
C++
3
Java
4
Spring Framework
5
Hibernate ORM framework

ForEach遍历

EntrySet方式

public class IterateHashMapExample {  
    public static void main(String[] args) {
        //使用 For-each 循环遍历 HashMap EntrySet
        Map<Integer, String> coursesMap = new HashMap<Integer, String>();
        coursesMap.put(1, "C");
        coursesMap.put(2, "C++");
        coursesMap.put(3, "Java");
        coursesMap.put(4, "Spring Framework");
        coursesMap.put(5, "Hibernate ORM framework");

        for (Map.Entry<Integer, String> entry : coursesMap.entrySet()) {
            System.out.println(entry.getKey());
            System.out.println(entry.getValue());
        }
    }  
}

Output:

1
C
2
C++
3
Java
4
Spring Framework
5
Hibernate ORM framework

KeySet方式

public class IterateHashMapExample {  
    public static void main(String[] args) {
        //使用 For-each 循环遍历 HashMap KeySet
        Map<Integer, String> coursesMap = new HashMap<Integer, String>();
        coursesMap.put(1, "C");
        coursesMap.put(2, "C++");
        coursesMap.put(3, "Java");
        coursesMap.put(4, "Spring Framework");
        coursesMap.put(5, "Hibernate ORM framework");

        for (Integer key : coursesMap.keySet()) {
            System.out.println(key);
            System.out.println(coursesMap.get(key));
        }
    }  
}

Output:

1
C
2
C++
3
Java
4
Spring Framework
5
Hibernate ORM framework

Lambda表达式遍历

Lambda方式

public class IterateHashMapExample {  
    public static void main(String[] args) {
        //使用 Lambda 表达式遍历 HashMap
        Map<Integer, String> coursesMap = new HashMap<Integer, String>();
        coursesMap.put(1, "C");
        coursesMap.put(2, "C++");
        coursesMap.put(3, "Java");
        coursesMap.put(4, "Spring Framework");
        coursesMap.put(5, "Hibernate ORM framework");

        coursesMap.forEach((key, value) -> {
            System.out.println(key);
            System.out.println(value);
        });
    }  
}

Output:

1
C
2
C++
3
Java
4
Spring Framework
5
Hibernate ORM framework

StreamAPI遍历

StreamAPI单线程方式

public class IterateHashMapExample {
    public static void main(String[] args) {
        //使用 Stream API 遍历 HashMap 单线程
        Map<Integer, String> coursesMap = new HashMap<Integer, String>();
        coursesMap.put(1, "C");
        coursesMap.put(2, "C++");
        coursesMap.put(3, "Java");
        coursesMap.put(4, "Spring Framework");
        coursesMap.put(5, "Hibernate ORM framework");

        coursesMap.entrySet().stream().forEach((entry) -> {
            System.out.println(entry.getKey());
            System.out.println(entry.getValue());
        });
    }
}

Output:

1
C
2
C++
3
Java
4
Spring Framework
5
Hibernate ORM framework

StreamAPI多线程方式

public class IterateHashMapExample {
    public static void main(String[] args) {
        //使用 Stream API 遍历 HashMap 多线程
        Map<Integer, String> coursesMap = new HashMap<Integer, String>();
        coursesMap.put(1, "C");
        coursesMap.put(2, "C++");
        coursesMap.put(3, "Java");
        coursesMap.put(4, "Spring Framework");
        coursesMap.put(5, "Hibernate ORM framework");

        coursesMap.entrySet().parallelStream().forEach((entry) -> {
            System.out.println(entry.getKey());
            System.out.println(entry.getValue());
        });
    }
}

Output:

4
Spring Framework
5
Hibernate ORM framework
1
C
2
C++
3
Java