EnumSet和EnumMap是Java中专为枚举设计的高效集合类。1. EnumSet使用位向量存储,性能高、内存省,适用于管理同一枚举类型的值,支持allOf、noneOf、of和range等创建方式;2. EnumMap以枚举为键,内部用数组基于ordinal值索引,查找快,类型安全且遍历有序;3. 二者均禁止null元素(EnumMap允许null值),相比HashSet或HashMap,在处理枚举时具有更高性能和更小内存开销,是操作枚举数据的首选。

Java 中的 EnumSet 和 EnumMap 是专为枚举类型设计的高性能集合类,它们利用枚举的特性(如有限、有序)实现了更高效的存储和访问方式。下面介绍如何使用枚举作为集合的关键用法。
EnumSet 是一个专门用于枚举类型的 Set 实现,内部使用位向量(bit vector)表示,非常紧凑且性能高。它不允许 null 元素,所有元素必须是同一个枚举类型的实例。
常用创建方式:示例代码:
<font face="Consolas">
enum Color { RED, GREEN, BLUE }
EnumSet<Color> colors = EnumSet.allOf(Color.class);
colors.remove(Color.BLUE); // 移除蓝色
System.out.println(colors); // 输出 [RED, GREEN]
</font>EnumMap 是 Map 的实现,键必须是枚举类型。它内部使用数组存储,根据枚举的 ordinal() 值直接定位,因此查找效率接近数组访问。
立即学习“Java免费学习笔记(深入)”;
基本用法:示例代码:
<font face="Consolas"> EnumMap<Color, String> colorNames = new EnumMap<>(Color.class); colorNames.put(Color.RED, "红色"); colorNames.put(Color.GREEN, "绿色"); System.out.println(colorNames.get(Color.RED)); // 输出 红色 System.out.println(colorNames.size()); // 输出 2 </font>
相比普通集合,它们在处理枚举时有明显优势:
以上就是Java EnumSet和EnumMap如何使用枚举作为集合的详细内容,更多请关注php中文网其它相关文章!
每个人都需要一台速度更快、更稳定的 PC。随着时间的推移,垃圾文件、旧注册表数据和不必要的后台进程会占用资源并降低性能。幸运的是,许多工具可以让 Windows 保持平稳运行。
Copyright 2014-2025 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号