调用 hashset 的 size() 方法可 o(1) 获取唯一元素个数;它返回非负整数,重复元素不计入,空集为 0,无需遍历,不等同于底层 capacity。

在 Java 中,获取 HashSet 的元素总数非常简单,直接调用其继承自 Collection 接口的 size() 方法即可。
使用 size() 方法获取元素个数
HashSet 没有专门的“长度”或“计数”字段,但内部维护了一个 size 变量,size() 方法以 O(1) 时间复杂度 返回当前集合中实际存储的元素数量(不包括重复添加后被忽略的元素)。
你接手一个需求时,是不是经常这样:"改一个小字段 → 结果把不相关的代码也改了"、"需求说得很模糊 → 做着做着发现跑偏了"、"数据库加个字段 → 上线才发现漏了数据兼容"、"做了个新功能 → 一个月后自己都忘了当时怎么设计的"、"写到一半被中断 → 再回来不知道从哪继续";这个 Skill 就是专门解决这些问题的。 它会自动探测你的项目环境(JDK、Spring Boot、ORM、数据库、前端框架),记在
- 该方法始终返回非负整数,空集合返回
0 - 即使多次添加相同元素,
size()也只计算唯一元素个数 - 无需遍历、不依赖迭代器,高效可靠
代码示例
Java
HashSet<string> set = new HashSet();
set.add("apple");
set.add("banana");
set.add("apple"); // 重复,不生效
System.out.println(set.size()); // 输出:2</string>
注意:不要混淆 size() 和 capacity
HashSet 本身没有公开的容量(capacity)属性。底层 HashMap 有初始容量和加载因子,但这些属于实现细节,与元素总数无关。开发者只需关注 size(),它准确反映当前有效元素个数。
- 不要尝试通过反射访问内部 table 数组长度来估算大小
- 不要用迭代计数替代
size()—— 多余且低效 - 并发场景下若使用
ConcurrentHashMap背后的ConcurrentHashSet(如Collections.newSetFromMap()),size()仍可用,但可能因并发修改而短暂不精确(文档明确说明)
Java免费学习笔记:立即使用
解锁 Java 大师之旅:从入门到精通的终极指南










