最直接高效的方式是使用keyset()方法配合增强for循环遍历;keyset()返回与原map关联的set视图,支持安全迭代删除,java 8+可用foreach+lambda,避免使用entryset()仅取key。

在 Java 中,只遍历 HashMap 的所有 key,最直接、高效的方式是使用 keySet() 方法获取 key 的集合,再用增强 for 循环或迭代器遍历。
用增强 for 循环遍历 keySet()
keySet() 返回一个包含所有 key 的 Set 视图,它与原 map 保持关联(修改会影响原 map),且不允许重复(符合 Set 特性)。这是最常用、最简洁的方式:
HashMap<string integer> map = new HashMap();
map.put("apple", 1);
map.put("banana", 2);
map.put("cherry", 3);
for (String key : map.keySet()) {
System.out.println(key);
}
// 输出:apple、banana、cherry(顺序不保证)</string>
用迭代器遍历 keySet()
适合需要在遍历中删除 key 的场景(避免 ConcurrentModificationException),因为只有通过迭代器的 remove() 方法才是安全的:
Iterator<string> keyIter = map.keySet().iterator();
while (keyIter.hasNext()) {
String key = keyIter.next();
System.out.println(key);
// 如需删除当前 key,可调用:
// keyIter.remove(); // 安全删除
}</string>
用 forEach + Lambda(Java 8+)
语法更紧凑,适合简单操作;注意 lambda 中不能修改 map 结构(如 put/remove),否则会抛异常:
map.keySet().forEach(key -> System.out.println(key));
不推荐:先取 entrySet 再只用 key
虽然 entrySet() 也能拿到 key(e.getKey()),但它额外构造了 Map.Entry 对象,有轻微开销。如果**只需要 key**,没必要绕路:
- ❌ 不必要:for (Map.Entry
e : map.entrySet()) { System.out.println(e.getKey()); } - ✅ 推荐:直接用
keySet(),语义清晰、性能略优
不复杂但容易忽略 —— 记住 keySet() 就是专为这个目的设计的 API。
Java免费学习笔记:立即使用
解锁 Java 大师之旅:从入门到精通的终极指南











