Map 接口集合的遍历方式
# Map 接口集合的遍历方式
Map 集合是用于存储键值对的常用数据结构,以下是几种常见的遍历 Map 集合的方式。

# 1. 通过 entrySet 遍历 Map 的键值对
使用说明:
- 适用集合: 适用于所有
Map实现类,如HashMap、LinkedHashMap、TreeMap等。 - 使用前提:
Map集合需要支持entrySet()方法。 - 注意事项: 这种方式遍历的是
Map.Entry对象,可以同时获取键和值,是最常用的遍历方式。
代码示例:
import java.util.HashMap;
import java.util.Map;
public class MapEntrySetExample {
public static void main(String[] args) {
// 创建一个HashMap集合,存储键值对
Map<String, Integer> map = new HashMap<>();
map.put("Java", 1);
map.put("Python", 2);
map.put("C++", 3);
// 使用entrySet遍历Map的键值对
for (Map.Entry<String, Integer> entry : map.entrySet()) {
// 获取键和值
String key = entry.getKey();
Integer value = entry.getValue();
// 输出键值对
System.out.println("Key: " + key + ", Value: " + value);
}
}
}
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
参数说明:
Map.Entry<String, Integer> entry:代表一个键值对,entry.getKey()获取键,entry.getValue()获取值。map.entrySet():返回Set<Map.Entry<K, V>>,用于遍历Map中的每个键值对。
# 2. 通过 keySet 遍历 Map 的键,然后通过键获取值
使用说明:
- 适用集合: 适用于所有
Map实现类,如HashMap、LinkedHashMap、TreeMap等。 - 使用前提:
Map集合需要支持keySet()方法。 - 注意事项: 这种方式遍历的是
Map的键,通过键再获取值,适合需要只关心键的场景。
代码示例:
import java.util.HashMap;
import java.util.Map;
public class MapKeySetExample {
public static void main(String[] args) {
// 创建一个HashMap集合,存储键值对
Map<String, Integer> map = new HashMap<>();
map.put("Java", 1);
map.put("Python", 2);
map.put("C++", 3);
// 使用keySet遍历Map的键
for (String key : map.keySet()) {
// 通过键获取对应的值
Integer value = map.get(key);
// 输出键值对
System.out.println("Key: " + key + ", Value: " + value);
}
}
}
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
参数说明:
map.keySet():返回Set<K>,包含Map中的所有键。map.get(key):根据键获取对应的值。
# 3. 通过 values() 遍历 Map 的所有值
使用说明:
- 适用集合: 适用于所有
Map实现类,如HashMap、LinkedHashMap、TreeMap等。 - 使用前提:
Map集合需要支持values()方法。 - 注意事项: 这种方式遍历的是
Map中的所有值,适合只关心值的场景。
代码示例:
import java.util.HashMap;
import java.util.Map;
public class MapValuesExample {
public static void main(String[] args) {
// 创建一个HashMap集合,存储键值对
Map<String, Integer> map = new HashMap<>();
map.put("Java", 1);
map.put("Python", 2);
map.put("C++", 3);
// 使用values方法遍历Map的所有值
for (Integer value : map.values()) {
// 输出值
System.out.println("Value: " + value);
}
}
}
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
参数说明:
map.values():返回Collection<V>,包含Map中的所有值。
# 4. 使用 forEach 和 Lambda 表达式遍历 Map
使用说明:
- 适用集合: 适用于所有
Map实现类,如HashMap、LinkedHashMap、TreeMap等。 - 使用前提: Java 8 及以上版本,
Map集合需要支持forEach()方法。 - 注意事项: 这种方式通过 Lambda 表达式进行遍历,代码简洁易读,适合需要同时处理键和值的场景。
代码示例:
import java.util.HashMap;
import java.util.Map;
public class MapForEachLambdaExample {
public static void main(String[] args) {
// 创建一个HashMap集合,存储键值对
Map<String, Integer> map = new HashMap<>();
map.put("Java", 1);
map.put("Python", 2);
map.put("C++", 3);
// 使用forEach和Lambda表达式遍历Map的键值对
map.forEach((key, value) -> {
// 输出键值对
System.out.println("Key: " + key + ", Value: " + value);
});
}
}
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
参数说明:
map.forEach((key, value) -> {}):使用 Lambda 表达式,key和value分别代表键和值。
# 5. 使用 Stream API 遍历 Map
使用说明:
- 适用集合: 适用于所有
Map实现类,如HashMap、LinkedHashMap、TreeMap等。 - 使用前提: Java 8 及以上版本,
Map集合需要支持stream()方法。 - 注意事项:
Stream支持更复杂的数据处理操作,如过滤、排序等,适合需要进行复杂处理的场景。
代码示例:
import java.util.HashMap;
import java.util.Map;
import java.util.stream.Stream;
public class MapStreamApiExample {
public static void main(String[] args) {
// 创建一个HashMap集合,存储键值对
Map<String, Integer> map = new HashMap<>();
map.put("Java", 1);
map.put("Python", 2);
map.put("C++", 3);
// 使用Stream API遍历Map的键值对
map.entrySet().stream().forEach(entry -> {
// 获取键和值
String key = entry.getKey();
Integer value = entry.getValue();
// 输出键值对
System.out.println("Key: " + key + ", Value: " + value);
});
}
}
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
参数说明:
map.entrySet().stream():将Map的entrySet转换为流(Stream)。stream().forEach(entry -> {}):使用 Lambda 表达式对每个键值对进行处理。
# 6. Map 接口集合的遍历总结
- 通过
entrySet()遍历键值对是最常用、最全面的遍历方式,适用于大多数场景。 - 通过
keySet()和values()进行遍历适合只关注键或值的场景。 - 使用
forEach和Stream API提供了更现代的遍历方式,代码简洁,适合复杂处理操作。
编辑此页 (opens new window)
上次更新: 2024/12/28, 18:32:08