最推荐使用entrySet()配合增强for循环遍历键值对,高效且简洁;仅需键或值时可用keySet()或values();需边遍历边删除则必须用Iterator的remove()方法。

Java HashMap 遍历键和值有多种方式,最常用、最推荐的是使用 entrySet() 配合增强 for 循环或迭代器,既能同时拿到 key 和 value,又效率高、代码简洁。
用 entrySet() 遍历键值对(推荐)
这是最高效、最直观的方式,避免了重复查表(比如先取 key 再 get value)。
- 调用
map.entrySet()获取一个Set> - 遍历这个 Set,每个元素是
Map.Entry,可用getKey()和getValue()分别获取键和值
示例:
HashMap<string integer> map = new HashMap();
map.put("apple", 5);
map.put("banana", 3);
for (Map.Entry<string integer> entry : map.entrySet()) {
String key = entry.getKey();
Integer value = entry.getValue();
System.out.println(key + " → " + value);
}
// 输出类似:apple → 5,banana → 3(顺序不保证)
</string></string>
分别遍历键或值(按需选择)
如果只需要 key 或只需要 value,可以直接用 keySet() 或 values():
-
map.keySet()返回所有 key 的 Set,适合只处理键的场景 -
map.values()返回所有 value 的 Collection,适合只统计或过滤值
示例(只遍历键):
for (String key : map.keySet()) {
System.out.println("Key: " + key);
}
示例(只遍历值):
在调试 Java 后端 API 故障时使用此技能,尤其适用于以下任务:分析日志、跨 Controller、Service 和 Mapper 层追踪请求、定位异常根因、检查 SQL 执行或参数流转,以及生成简洁的诊断结论与修复方案。
for (Integer value : map.values()) {
System.out.println("Value: " + value);
}
用 Iterator 手动遍历(适合边遍历边删除)
如果需要在遍历过程中删除元素,必须用迭代器的 remove() 方法,否则会抛 ConcurrentModificationException。
- 通过
map.entrySet().iterator()获取迭代器 - 用
hasNext()和next()遍历,用iterator.remove()安全删除当前项
示例(删除 value 小于 4 的项):
Iterator<map.entry integer>> iter = map.entrySet().iterator();
while (iter.hasNext()) {
Map.Entry<string integer> entry = iter.next();
if (entry.getValue()
</string></map.entry>Lambda 方式(Java 8+,简洁函数式)
用 forEach() 配合 Lambda,代码更紧凑:
map.forEach((key, value) -> System.out.println(key + " → " + value));
注意:这种方式不能中断遍历,也不能在循环体内修改 map 结构(如 put/remove),否则行为未定义。
Java免费学习笔记:立即使用
解锁 Java 大师之旅:从入门到精通的终极指南










