java 如何遍历mp
遍历 Map 的方法
在 Java 中,遍历 Map 有多种方式,可以根据需求选择不同的方法。以下是几种常见的遍历方式:
使用 entrySet() 和 for-each 循环
通过 entrySet() 获取 Map 的键值对集合,然后使用 for-each 循环遍历:
Map<String, Integer> map = new HashMap<>();
map.put("A", 1);
map.put("B", 2);
for (Map.Entry<String, Integer> entry : map.entrySet()) {
String key = entry.getKey();
Integer value = entry.getValue();
System.out.println("Key: " + key + ", Value: " + value);
}
使用 keySet() 遍历键
通过 keySet() 获取 Map 的键集合,再通过键获取值:

for (String key : map.keySet()) {
Integer value = map.get(key);
System.out.println("Key: " + key + ", Value: " + value);
}
使用 values() 遍历值
如果只需要遍历值,可以使用 values() 方法:
for (Integer value : map.values()) {
System.out.println("Value: " + value);
}
使用 Iterator 遍历
通过 entrySet().iterator() 获取迭代器,逐个处理键值对:

Iterator<Map.Entry<String, Integer>> iterator = map.entrySet().iterator();
while (iterator.hasNext()) {
Map.Entry<String, Integer> entry = iterator.next();
System.out.println("Key: " + entry.getKey() + ", Value: " + entry.getValue());
}
使用 Java 8 的 forEach 方法
利用 Java 8 的 Lambda 表达式简化遍历:
map.forEach((key, value) -> {
System.out.println("Key: " + key + ", Value: " + value);
});
使用 Stream API
通过 Stream 进行遍历和处理:
map.entrySet().stream()
.forEach(entry -> {
System.out.println("Key: " + entry.getKey() + ", Value: " + entry.getValue());
});
性能比较
entrySet()是最高效的方式,因为它直接访问键值对,避免通过键查找值。keySet()需要额外调用get()方法获取值,性能略低。values()仅适用于不需要键的场景。- Java 8 的
forEach和Stream提供了更简洁的语法,适合现代 Java 开发。
注意事项
- 遍历过程中如果需要修改
Map,应使用Iterator的remove()方法,否则可能引发ConcurrentModificationException。 - 线程安全的
Map(如ConcurrentHashMap)在多线程环境下遍历时无需额外同步。
以上方法适用于所有 Map 实现类(如 HashMap、TreeMap、LinkedHashMap 等)。






