Java遍历HashMap推荐用entrySet()配合增强for循环,效率高且语义清晰;也可用keySet()或values()分别遍历键或值;需边遍历边删除时用Iterator;Java 8+支持forEach+Lambda但不支持break/return。

Java 中遍历 HashMap 的键和值有多种方式,最常用且推荐的是使用 entrySet() 配合增强 for 循环或迭代器。
用 entrySet() 遍历键值对(推荐)
这是效率最高、语义最清晰的方式,直接获取键值对集合,避免重复查表。
- 调用
map.entrySet()返回Set<map.entry>></map.entry> - 用增强 for 循环遍历每个
Map.Entry - 通过
entry.getKey()和entry.getValue()分别获取键和值
HashMap<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 + " -> " + value);
}
分别遍历键和值(适合只用其一的场景)
如果只需要键或只需要值,可直接用 keySet() 或 values(),更简洁。
在 Java 中初始化和管理阿里云 SDK客户端。包括单例模式、线程安全、endpoint 与 region 配置、VPC 终端节点、同步与异步等。
-
map.keySet()返回所有键的Set,适合只处理键 -
map.values()返回所有值的Collection,适合只处理值
for (String key : map.keySet()) {
System.out.println("Key: " + key);
}
示例(仅遍历值):
for (Integer value : map.values()) {
System.out.println("Value: " + value);
}
用 Iterator 手动遍历(兼容旧代码或需删除元素时)
当需要在遍历过程中安全删除元素时,必须使用迭代器的 remove() 方法。
立即学习“Java免费学习笔记(深入)”;
- 调用
map.entrySet().iterator()获取迭代器 - 用
hasNext()和next()逐个访问 - 删除当前项用
iterator.remove(),不能直接调用map.remove()
Iterator<Map.Entry<String, Integer>> it = map.entrySet().iterator();
while (it.hasNext()) {
Map.Entry<String, Integer> entry = it.next();
if (entry.getValue() > 1) {
it.remove(); // 安全删除
}
}
Java 8+ 可用 forEach + Lambda(简洁但不支持 break/return)
语法更简短,适合简单逻辑;注意 lambda 内部无法用 break 或 return 跳出外层循环。
map.forEach((key, value) ->
System.out.println(key + " = " + value)
);

















