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