set 的 size 属性返回当前元素个数且自动更新,clear() 方法清空所有元素并使 size 归零;二者配合可高效实现容量监控与快速重置,但 size 不反映内存占用,clear 也不触发垃圾回收。

Set 的 size 属性返回当前元素个数,clear() 方法则一次性清空所有元素——两者配合,能高效控制不重复集合的实际容量。
size 是只读属性,实时反映集合大小
Set 没有 length,用 size 获取当前元素数量。它自动更新,无需手动维护:
- 每次 add() 或 delete() 后,size 立即变化
- 初始化空 Set 时,size 为 0;添加重复值不会增加 size
- 不能赋值(如
set.size = 5),会静默失败或报错(严格模式)
示例:
const set = new Set(['a', 'b']);
console.log(set.size); // 2
set.add('c');
console.log(set.size); // 3
set.add('a'); // 重复,无变化
console.log(set.size); // 还是 3
clear() 彻底清空,size 随即归零
clear() 不接受参数,调用后 Set 中所有元素被移除,size 变为 0:
在 Java 中初始化和管理阿里云 SDK客户端。包括单例模式、线程安全、endpoint 与 region 配置、VPC 终端节点、同步与异步等。
- 不影响 Set 实例本身,仍可继续 add 新元素
- 比循环 delete 更简洁、性能更好(尤其元素多时)
- 与数组的 length = 0 不同,clear 是 Set 原生方法,语义明确
示例:
const set = new Set([1, 2, 3]); console.log(set.size); // 3 set.clear(); console.log(set.size); // 0 set.add(4); console.log(set.size); // 1
组合使用:容量监控 + 快速重置
在缓存、去重队列、状态管理等场景中,常需判断是否“满”并重置:
- 用 size 判断是否达到上限(如限制最多 10 个唯一项)
- 触发 clear() 释放全部空间,而非逐个清理
- 避免因遗漏 delete 导致 size 失准
示例(简易去重日志缓冲区):
const logSet = new Set();
const MAX_LOGS = 3;
function addLog(msg) {
if (logSet.size >= MAX_LOGS) {
logSet.clear(); // 满了就清空,不保留旧日志
}
logSet.add(msg);
}
addLog('start'); // size=1
addLog('loading'); // size=2
addLog('done'); // size=3
addLog('retry'); // 触发 clear → size=0,再 add → size=1
注意:size 不代表内存占用,clear 不触发垃圾回收
size 只统计元素个数,和实际内存无关;clear 移除引用,但对象是否被回收取决于是否有其他引用存在:
- 若 Set 中存的是大型对象,且外部仍有变量指向它们,clear 后这些对象不会立刻被回收
- size 变为 0,只是说明 Set 内部不再持有引用
- 真正释放内存,还需确保没有其他地方保留对这些值的引用
Java免费学习笔记:立即使用
解锁 Java 大师之旅:从入门到精通的终极指南










