最直接方法是调用remove(key),时间复杂度o(1),返回被删值或null;条件删除用remove(key, value),需键值均匹配才删除;遍历时须用iterator.remove()或removeif()避免并发修改异常。

Java 中删除 HashMap 中的指定键值对,最直接的方法是调用 remove() 方法,传入要删除的键(key)即可。
使用 remove(key) 删除指定键对应的键值对
这是最常用、最推荐的方式。HashMap 的 remove(Object key) 方法会根据键查找并移除对应的键值对,如果该键存在,返回其关联的旧值;如果不存在,返回 null。
- 操作安全:不会抛出异常,即使键不存在也能正常执行
- 返回值有用:可用于判断键是否存在或记录被删的值
- 时间复杂度为 O(1),平均性能高效
示例:
Mapmap.put("apple", 5);
map.put("banana", 3);
Integer removedValue = map.remove("apple"); // 返回 5
System.out.println(removedValue); // 输出 5
System.out.println(map.containsKey("apple")); // 输出 false
使用 remove(key, value) 进行条件删除
如果希望**仅在键存在且对应值也匹配时才删除**,可使用重载方法 remove(Object key, Object value)。它采用“先比值再删”的语义,避免误删。
- 只有 key 存在 且 当前映射的 value 等于传入的 value(按
equals()判断),才会删除 - 返回
true表示删除成功,false表示未删除(键不存在或值不匹配)
示例:
map.put("apple", 5);boolean success = map.remove("apple", 10); // false,值不匹配,不删除
System.out.println(success); // false
System.out.println(map.size()); // 仍为 2
success = map.remove("apple", 5); // true,完全匹配,删除成功
System.out.println(success); // true
遍历时删除需谨慎:避免 ConcurrentModificationException
如果要在遍历过程中删除满足条件的键值对,**不能直接调用 map.remove()**,否则会触发并发修改异常。
- 正确做法是使用迭代器的
remove()方法 - 或使用 Java 8+ 的
removeIf()(适用于基于 key 或 value 的简单条件)
示例(安全遍历删除):
Iteratorwhile (iter.hasNext()) {
Map.Entry
if ("banana".equals(entry.getKey())) {
iter.remove(); // 安全!
}
}
其他注意事项
- 键为
null也是合法的,map.remove(null)可删除 null 键对应的条目 - 若使用自定义对象作 key,务必正确重写
hashCode()和equals() - 删除后原 map 大小立即变化,
size()返回更新后的数量
Java免费学习笔记:立即使用
解锁 Java 大师之旅:从入门到精通的终极指南











