Set.clear() 是最直接高效清空 Set 的方式,时间复杂度 O(1),不接受参数、不返回值,立即重置内部结构;适用于缓存清理等场景,但不触发事件、不释放对象引用。

Set.clear() 是最直接、最高效的方式,能瞬间清空整个 Set 中的所有元素,适合用于“注销缓存记录”这类场景。
clear() 方法本身不接受参数,也不返回值(返回 undefined)
调用后,Set 内部所有键值对立即被移除,底层存储结构重置,时间复杂度为 O(1) —— 这是它“快速”的根本原因。
当用户要求为 Java 代码添加注释、修改注释、审查注释、整理注释格式,或要求按照代码注释规范处理 Java 文件时,使用本技能。本技能用于统一生成和维护 Java 类注释模板、按 Git 对比 release 判断版本号、补充每行代码上方中文块注释、调整注释空行规则,并保持 Java 文件 UTF-8 无 BOM 编码。典型触发场景包括:补充类注释、更新 @version、检查 @author 来源、整理行尾注释、把注释放到代码上一行、检查注释是否符合规范、构建前检查 Java 注释风格。
- 不需要遍历、不需要逐个 delete,比手动循环 + delete 快得多
- 无论 Set 里有 10 个还是 10 万个元素,clear() 耗时基本一致
- 注意:clear() 不会触发任何事件,也不会影响 Set 实例的引用关系
典型缓存清理示例
假设你用 Set 缓存了用户权限标识:
const permissionCache = new Set(['read:post', 'write:comment', 'delete:own']);permissionCache.clear(); // ✅ 瞬间清空
console.log(permissionCache.size); // 输出 0
和 Map、Array 清空方式的区别
- Map 也有 clear(),行为一致;但 Object 没有原生 clear,需手动赋 {} 或 Object.keys().forEach(k => delete obj[k])
- Array 用 length = 0 或 splice(0) 可清空,但 Set 没有 length 属性,也不支持索引操作
- 不要误用 Set.prototype.delete() 配合 for...of 循环清空——既冗余又低效
注意事项
- clear() 不会释放 Set 对象本身,变量仍指向原实例,可继续 add 新元素
- 如果其他地方持有该 Set 的引用,clear() 会影响所有引用(因为是同一对象)
- 若需“逻辑注销”而非物理清空(比如留痕、审计),clear() 不适用,应改用标记字段或独立管理机制

















