java遍历hashmap有四种方式:①keyset()遍历键;②values()遍历值;③entryset()遍历键值对(最常用,性能优);④jdk8+ foreach(lambda)遍历。修改时须用iterator.remove()避免并发修改异常。

Java 中遍历 HashMap 有多种方式,核心在于根据需求选择最合适的遍历目标:只取键(keySet())、只取值(values())、或同时取键和值(entrySet())。JDK 8 后还支持更简洁的 Lambda 遍历方式。
遍历所有键(Key)
使用 keySet() 方法获取键的集合,再用增强 for 循环或迭代器遍历:
-
map.keySet()返回Set<k></k>,不保证顺序(底层哈希表无序) - 适合只需要键、不需要对应值的场景,比如判断是否存在某 key 或批量删除
示例:
for (String key : map.keySet()) {System.out.println("Key: " + key);
}
遍历所有值(Value)
使用 values() 方法获取值的集合:
-
map.values()返回Collection<v></v>,允许重复值 - 无法通过值反查键,也不体现键值关联关系
示例:
for (Integer value : map.values()) {System.out.println("Value: " + value);
}
遍历键值对(Entry)——最常用
使用 entrySet() 获取 Map.Entry<k></k> 集合,既能访问 key,也能访问 value,性能优于分别遍历 keySet + get(key):
- 每个
Entry对象包含getKey()和getValue()方法 - 推荐用于需要同时处理键和值的逻辑,如格式化输出、条件过滤、统计等
示例(传统方式):
for (Map.EntrySystem.out.println(entry.getKey() + " → " + entry.getValue());
}
示例(JDK 8+ Lambda 方式):
map.forEach((key, value) ->System.out.println(key + " → " + value));
注意事项
遍历时若需修改 HashMap(如删除),必须使用 Iterator.remove(),不能直接调用 map.remove(),否则会抛出 ConcurrentModificationException:
while (iter.hasNext()) {
Map.Entry
if (e.getValue() iter.remove(); // 安全删除
}
}
Java免费学习笔记:立即使用
解锁 Java 大师之旅:从入门到精通的终极指南











