HashSet 获取元素数量直接调用 size() 方法,返回实际元素个数(去重后),时间复杂度 O(1),安全返回 0;非数组长度或哈希表容量,勿用 toArray().length 或混淆 isEmpty(),并发需同步。

Java 中 HashSet 获取元素数量,直接调用 size() 方法即可。
使用 size() 方法获取元素个数
HashSet 继承自 AbstractSet,而 AbstractSet 实现了 Collection 接口,其中定义了 size() 方法。该方法返回当前集合中实际存储的元素个数(不包含重复元素)。
- 时间复杂度为 O(1),因为 HashSet 内部维护了一个
size字段,每次增删都会更新它 - 即使集合为空,
size()也安全返回 0,不会抛异常 - 注意:不是数组长度,也不是底层哈希表容量(capacity),而是实际元素个数
代码示例
下面是一个简单演示:
<font color="#888"><pre class="brush:php;toolbar:false;">HashSet<String> set = new HashSet<>();
System.out.println(set.size()); // 输出:0
set.add("apple");
set.add("banana");
set.add("apple"); // 重复,不生效
System.out.println(set.size()); // 输出:2
常见误区提醒
- 不要用
toArray().length来获取数量——效率低且没必要 - 不要混淆
size()和isEmpty():后者只判断是否为 0,前者返回具体数值 - 多线程环境下若 HashSet 未同步,
size()的结果可能不准确,应使用ConcurrentHashMap.newKeySet()或加锁保障一致性


















