keySet() 返回 HashMap 键的动态 Set 视图,支持实时同步增删改、迭代器删除,但不可 add;可遍历、转数组或 ArrayList;含 null 键时需判空。

Java 中 HashMap 获取所有键集合,用 keySet() 方法即可,它返回一个包含所有键的 Set 视图。
keySet() 返回的是一个动态视图
这个 Set 不是副本,而是 HashMap 内部结构的实时映射:
- 对 Map 做增删改操作后,再次遍历 keySet() 会反映最新状态
- 直接通过 keySet() 删除元素(如调用 iterator().remove())也会同步修改原 Map
- 但不能往 keySet() 中 add 元素,否则抛 UnsupportedOperationException
常用写法示例
获取后通常用于遍历或转成其他结构:
Java Maven 项目审查工作流的通用输入处理。当 Java Maven 项目以 ZIP压缩包或 GitLab 仓库 URL 形式提供且需要...时使用。
HashMap<String, Integer> map = new HashMap<>();
map.put("a", 1);
map.put("b", 2);
// 获取键集合
Set<String> keys = map.keySet();
// 方式1:增强 for 循环遍历
for (String key : keys) {
System.out.println(key);
}
// 方式2:转成数组
String[] keyArray = keys.toArray(new String[0]);
// 方式3:转成 ArrayList(如需索引访问)
List<String> keyList = new ArrayList<>(keys);
注意 null 键的情况
如果 HashMap 中存了 null 键,keySet() 返回的 Set 中也会包含一个 null 元素:
立即学习“Java免费学习笔记(深入)”;
- 遍历时需注意判空,避免 NullPointerException
- Set 的 contains(null)、remove(null) 等操作都正常支持

















