java hashmap 获取大小使用 size() 方法,判空使用 isempty() 方法。调用 size() 返回集合中键值对的数量,若需判断集合是否为空应优先调用 isempty(),该方法在内部直接检查元素计数是否为零,比比较 size() == 0 更具语义且性能一致。

HashMap 的 size() 和 isEmpty() 方法如何工作
这两个方法分别对应不同的状态检查需求。size() 方法返回当前映射中的映射关系数量,其底层实现是读取维护计数的字段。而 isEmpty() 方法专门用于判断映射是否包含任何条目,它通过检查计数是否为零来实现。在实际开发中,如果只需要知道是否有数据,直接使用 isEmpty() 更为直观。

import java.util.HashMap;
public class Main {
public static void main(String[] args) {
HashMap<string integer> map = new HashMap();
// 初始状态
System.out.println("Size: " + map.size()); // 输出 0
System.out.println("Is Empty: " + map.isEmpty()); // 输出 true
map.put("key", 1);
// 添加元素后
System.out.println("Size: " + map.size()); // 输出 1
System.out.println("Is Empty: " + map.isEmpty()); // 输出 false
}
}</string>
为什么推荐使用 isEmpty() 而不是 size() == 0
虽然从逻辑结果上看,map.size() == 0 与 map.isEmpty() 等价,但后者提供了更清晰的代码意图。在 Java 8 及以后的版本中,isEmpty() 的实现非常轻量,直接返回布尔值,没有额外的开销。使用 isEmpty() 能让阅读者立即明白代码是在进行空值检查,而不是在进行数值比较。此外,对于某些特殊的 Map 实现,isEmpty() 可能有更优化的路径,尽管标准 HashMap 中两者性能差异可忽略不计。

import java.util.HashMap;
public class Main {
public static void main(String[] args) {
HashMap<string string> map = new HashMap();
// 推荐写法
if (map.isEmpty()) {
System.out.println("Map is empty");
}
// 不推荐写法,虽然功能相同
if (map.size() == 0) {
System.out.println("Map is empty");
}
}
}</string>
当 HashMap 为 null 时如何处理
上述方法仅适用于 HashMap 实例已创建的情况。如果引用本身为 null,调用 size() 或 isEmpty() 将抛出 NullPointerException。因此,在不确定 Map 是否被初始化时,必须先进行 null 检查。可以使用 map != null && map.isEmpty() 的组合来安全地判断一个可能为空的 Map 引用是否为空集合。
Java免费学习笔记:立即使用
解锁 Java 大师之旅:从入门到精通的终极指南











