方式分类
HashMap大致可分为下列4类遍历方式:
- Iterator遍历
- ForEach遍历
- Lambda表达式遍历
- StreamAPI遍历
具体实现
Iterator遍历
EntrySet方式
public class IterateHashMapExample {public static void main(String[] args) {//使用 Iterator 遍历 HashMap EntrySetMap<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<Entry<Integer, String>> iterator = coursesMap.entrySet().iterator();while (iterator.hasNext()) {Entry<Integer, String> entry = iterator.next();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) {
//使用 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
