首页 > Java > java教程 > 正文

Java中EnumMap应用方法

P粉602998670
发布: 2025-09-29 15:08:03
原创
935人浏览过
EnumMap是Java中基于数组实现的高性能枚举映射,提供O(1)存取速度、有序遍历且键必须为同一枚举类型实例,不可为null;可通过put/get操作管理键值对,并能替代if-else或switch实现清晰的策略映射,如用Operation枚举关联运算符函数;注意其非线程安全,需通过Collections.synchronizedMap包装用于多线程环境。

java中enummap应用方法

EnumMap 是 Java 中专为枚举类型设计的高性能 Map 实现,它内部使用数组存储,保证了快速的存取速度和有序性。由于其特性,EnumMap 在处理与枚举相关的键值映射时非常高效且安全。

EnumMap 的基本使用方法

EnumMap 的构造函数要求传入枚举类型,所有键必须是同一枚举类型的实例。创建后,可以像普通 Map 一样进行 put、get、remove 等操作。

示例:

public enum Day {
    MONDAY, TUESDAY, WEDNESDAY, THURSDAY, FRIDAY, SATURDAY, SUNDAY
}

EnumMap<Day, String> schedule = new EnumMap<>(Day.class);
schedule.put(Day.MONDAY, "Work on project");
schedule.put(Day.TUESDAY, "Team meeting");
System.out.println(schedule.get(Day.MONDAY)); // 输出:Work on project

注意:不能使用 null 作为键,但可以将 null 作为值存储。

立即学习Java免费学习笔记(深入)”;

利用 EnumMap 替代条件判断

在很多场景中,可以用 EnumMap 来替代 if-else 或 switch 结构,使代码更清晰、可维护性更强。

例如,定义不同操作对应的处理器

AppMall应用商店
AppMall应用商店

AI应用商店,提供即时交付、按需付费的人工智能应用服务

AppMall应用商店56
查看详情 AppMall应用商店
public enum Operation {
    ADD, SUBTRACT, MULTIPLY, DIVIDE
}

Map<Operation, BinaryOperator<Integer>> opMap = new EnumMap<>(Operation.class);
{
    opMap.put(Operation.ADD, (a, b) -> a + b);
    opMap.put(Operation.SUBTRACT, (a, b) -> a - b);
    opMap.put(Operation.MULTIPLY, (a, b) -> a * b);
    opMap.put(Operation.DIVIDE, (a, b) -> a / b);
}

int result = opMap.get(Operation.ADD).apply(5, 3); // 得到 8

这种方式避免了冗长的分支语句,逻辑集中且易于扩展。

EnumMap 的性能优势与线程安全

EnumMap 内部基于数组实现,索引由枚举的 ordinal() 值决定,因此访问时间复杂度为 O(1),比 HashMap 更快,且遍历时保持枚举声明顺序。

说明:

  • 所有 key 必须来自同一个枚举类,否则抛出 ClassCastException。
  • 不支持 key 为 null,put(null, value) 会抛出 NullPointerException。
  • EnumMap 不是线程安全的,若在多线程环境中使用,需外部同步控制,如使用 Collections.synchronizedMap。

示例同步包装:

EnumMap<Day, String> safeMap = new EnumMap<>(Day.class);
Map<Day, String> syncMap = Collections.synchronizedMap(safeMap);

基本上就这些。用好 EnumMap 能让枚举相关的映射逻辑更简洁、高效。

以上就是Java中EnumMap应用方法的详细内容,更多请关注php中文网其它相关文章!

最佳 Windows 性能的顶级免费优化软件
最佳 Windows 性能的顶级免费优化软件

每个人都需要一台速度更快、更稳定的 PC。随着时间的推移,垃圾文件、旧注册表数据和不必要的后台进程会占用资源并降低性能。幸运的是,许多工具可以让 Windows 保持平稳运行。

下载
来源:php中文网
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn
最新问题
开源免费商场系统广告
热门教程
更多>
最新下载
更多>
网站特效
网站源码
网站素材
前端模板
关于我们 免责申明 意见反馈 讲师合作 广告合作 最新更新 English
php中文网:公益在线php培训,帮助PHP学习者快速成长!
关注服务号 技术交流群
PHP中文网订阅号
每天精选资源文章推送
PHP中文网APP
随时随地碎片化学习
PHP中文网抖音号
发现有趣的

Copyright 2014-2025 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号