新闻中心
j*a中EnumSet的使用
EnumSet是J*a中专用于枚举类型的高性能集合,基于位向量实现,具有高效、有序、非线程安全、不支持null等特性,仅能存储指定枚举类型元素,通过allOf、noneOf、of、range等静态方法创建,适用于权限控制、状态标记等场景,支持集合交并差操作,推荐在处理枚举集合时优先使用。

EnumSet 是 J*a 中专门用于枚举类型的高性能集合实现,它属于 j*a.util 包。与普通的 HashSet 或 TreeSet 相比,EnumSet 只能存储某一特定枚举类型的元素,并且内部通过位向量(bit vector)实现,因此效率非常高,内存占用也更小。
EnumSet 的特点
只能存储枚举类型: EnumSet 不允许添加 null 值,也不支持非枚举类型的数据。
性能优越: 内部使用位运算操作,存取速度极快。
有序: 元素按照枚举声明的顺序自然排序。
线程不安全: 和大多数集合一样,EnumSet 不是线程安全的,需要外部同步控制。
不允许 null 元素: 尝试添加 null 会抛出 NullPointerException。
常见创建方式
EnumSet 提供了多个静态工厂方法来创建实例,常用的有:
-
allOf(Class
elementType) :创建包含指定枚举类型所有值的集合。 -
noneOf(Class
elementType) :创建一个空的 EnumSet,元素类型为指定枚举。 - of(E e) 或 of(E e1, E e2, ...):创建包含指定枚举值的集合。
- range(E from, E to):创建从 from 到 to(包含)之间的所有枚举值的集合。
-
copyOf(Collection
c) :从其他集合复制元素创建 EnumSet。
示例代码:
public enum Day {
MONDAY, TUESDAY, WEDNESDAY, THURSDAY, FRIDAY, SATURDAY, SUNDAY
}
// 使用 allOf 获取所有工作日(假设前五天)
EnumSet<Day> workDays = EnumSet.range(Day.MONDAY, Day.FRIDAY);
// 创建只包含周末的集合
EnumSet<Day> weekends = EnumSet.of(Day.SATURDAY, Day.SUNDAY);
// 创建空集合再添加
EnumSet<Day> selectedDays = EnumSet.noneOf(Day.class);
selectedDays.add(Day.WEDNESDAY);
selectedDays.add(Day.FRIDAY);
// 获取全部
EnumSet<Day> allDays = EnumSet.allOf(Day.class);
实际应用场景
EnumSet 特别适合用在需要对一组枚举状态进行管理的场景,比如:
诚石网上书店系统 2007 Build 1109
功能简介:前台:1.图书展示(图书分类、图书详情、各种排行榜)2.图书搜索(基本搜索、高级搜索、搜索结果多种排序、进一步缩小搜索范围)3.图书推荐(将图书推荐给好友)4.图书收藏(暂时不购买的图书可以收藏)5.图书购买(完善的购买流程、使用云网在线支付网关,收费率低,结算周期短)6.图书评论7.用户注册、登陆8.强大的用户管理中心(订单管理、收藏管理、个人信息管理)9.缺书登记10.帮助中心11.
0
查看详情
立即学习“J*a免费学习笔记(深入)”;
- 权限控制中的权限集合(如 READ、WRITE、EXECUTE)
- 任务状态标记(如 PENDING、RUNNING、SUCCESS、FAILED)
- 配置选项开关集合
例如定义权限枚举:
public enum Permission {
READ, WRITE, DELETE, ADMIN
}
// 用户权限集合
EnumSet<Permission
> userPermissions = EnumSet.of(Permission.READ, Permission.WRITE);
EnumSet<Permission> adminPermissions = EnumSet.allOf(Permission.class);
集合操作示例
可以像普通集合一样进行交集、并集、差集等操作:
EnumSet<Day> set1 = EnumSet.of(Day.MONDAY, Day.WEDNESDAY, Day.FRIDAY); EnumSet<Day> set2 = EnumSet.of(Day.WEDNESDAY, Day.SATURDAY); // 并集:set1.addAll(set2) // 交集:set1.retainAll(set2) // 差集:set1.removeAll(set2) // 补集:EnumSet.complementOf(set1) —— 注意没有直接方法,可通过 allOf 后 removeAll 实现 EnumSet<Day> complement = EnumSet.allOf(Day.class); complement.removeAll(set1);
基本上就这些。合理使用 EnumSet 能让枚举集合的操作更高效、代码更清晰。只要涉及枚举类型集合,优先考虑 EnumSet。
以上就是j*a中EnumSet的使用的详细内容,更多请关注其它相关文章!
# 能让
# 厦门企业网站推广服务
# 网络推广网站优化怎么做
# 聊城建设网站案例
# 娄底湖南网站优化推广
# app推广营销环境分析
# 项目找营销推广团队
# 安徽网站网络推广哪个好
# uoee网站优化
# 网站建设业绩任务怎么写
# 呈贡区seo中介
# 推荐给
# java
# 中文网
# 相关文章
# 类属
# 适用于
# 多个
# 也不
# 高性能
# 网上
# 内存占用
# ai
相关栏目:
【
科技资讯46185 】
【
网络学院92790 】
相关推荐:
58动漫网在线官方网 58动漫网正版动漫入口网址
处理嵌套交互式控件:前端可访问性指南
c++如何使用折叠表达式(Fold Expressions)_c++17可变参数模板新技巧
Spring Boot嵌入式服务器与J*a EE:功能支持深度解析
QQ邮箱正确登录入口_QQ邮箱官方网站使用地址
蛙漫正版漫画平台入口_蛙漫免费阅读全站漫画资源
天眼查怎么看公司融资情况 天眼查企业融资历史查询步骤【攻略】
taptap防沉迷怎么解除 taptap解除健康系统限制说明【2025最新】
漫蛙网页登录入口 漫蛙漫画官方授权网址
J*aScript DOM操作:高效清空列表元素的策略与实践
Yandex浏览器官方网页版入口 Yandex浏览器最新版官网
漫画星球免费下拉式入口 漫画星球免费漫画在线阅读网站
如何在Promise链中优雅地中断后续then执行
品牌机怎么重装系统 联想/戴尔/惠普笔记本恢复出厂系统教程
MAC怎么在地图App里使用“四处看看”_MAC体验部分城市的3D实景街景
怎样把文件彻底粉碎无法恢复_Windows下安全删除敏感数据【隐私保护】
css链接悬停下划线样式如何自定义_使用::after结合content和transition
J*aScript类型检查_j*ascript代码规范
树莓派传感器触发:通过Twilio API发送WhatsApp消息教程
最新韩小圈网页版登录入口_官网在线观看官方链接
Golang切片为何属于引用类型_Golang slice底层结构与引用语义说明
Go语言中JSON数据解析与字段访问教程
PyTorch模型训练准确率不提升:诊断与修复常见指标计算错误
age动漫网站入口 age动漫官网直接访问入口
如何使用Go和Martini动态服务解码后的图片
如何将一个大型PHP应用拆分为多个Composer包_微服务与模块化架构的Composer实践
绝地鸭卫平a核爆刀流玩法攻略
Django通过AJAX异步上传图片并保存至模型的完整指南
AO3访问入口汇总 AO3网页版同人作品一键直达
html5 app怎么运行环境_配html5 app运行环境【教程】
C++如何使用AddressSanitizer(ASan)_C++调试工具中检测内存访问错误的利器
sublime怎么设置启动时打开的窗口_sublime会话管理与热退出
mysql通配符支持数字匹配吗_mysql通配符能否用于数字匹配的解析
为什么我的微信朋友圈看不到别人的更新_微信朋友圈更新显示异常解决方法
大麦的“候补”是什么意思 大麦候补购票规则【详解】
微信怎么把收藏的内容分类管理 微信收藏内容标签分类方法
谷歌google账号注册详细步骤 谷歌账号注册官方教程
微博网页版主页入口 微博官方网站免登录访问
邮政快递包裹最新位置 邮政快递实时追踪入口
迅雷下载到U盘速度很慢怎么办_迅雷U盘下载慢优化方法
如何在复杂的电商平台中优雅地管理共享资源并确保正确重定向,使用spryker-shop/resource-share-page模块助你一臂之力
C++如何检测键盘输入_C++ _kbhit与_getch函数非阻塞输入
css绝对定位元素脱离父容器怎么办_确保父元素position非static
漫蛙2(台版)官方入口地址 漫蛙2(台版)正版漫画网页端
Golang如何使用buffered channel提高性能_Golang buffered channel优化技巧
React Hooks最佳实践:动态组件状态管理的组件化方案
照顾宝贝2小游戏免费秒玩入口
Angular中单选按钮的正确使用与常见陷阱解析
AO3最新可访问网址 Archive of Our Own官方在线入口
Yandex官方入口网址 Yandex俄罗斯搜索引擎最新在线地址


2025-12-02
浏览次数:次
返回列表
> userPermissions = EnumSet.of(Permission.READ, Permission.WRITE);
EnumSet<Permission> adminPermissions = EnumSet.allOf(Permission.class);