千家信息网

Java怎么实现通过值查找对应的枚举

发表于:2025-11-19 作者:千家信息网编辑
千家信息网最后更新 2025年11月19日,这篇文章主要介绍"Java怎么实现通过值查找对应的枚举",在日常操作中,相信很多人在Java怎么实现通过值查找对应的枚举问题上存在疑惑,小编查阅了各式资料,整理出简单好用的操作方法,希望对大家解答"J
千家信息网最后更新 2025年11月19日Java怎么实现通过值查找对应的枚举

这篇文章主要介绍"Java怎么实现通过值查找对应的枚举",在日常操作中,相信很多人在Java怎么实现通过值查找对应的枚举问题上存在疑惑,小编查阅了各式资料,整理出简单好用的操作方法,希望对大家解答"Java怎么实现通过值查找对应的枚举"的疑惑有所帮助!接下来,请跟着小编一起来学习吧!

    一、背景

    Java 枚举是一个特殊的类,一般表示一组常量,比如一年的 4 个季节,一个年的 12 个月份,一个星期的 7 天,方向有东南西北等。

    最近工作中,对接了很多其他的系统,发现对接的同一个系统都有不同的环境(开发、测试、正式环境),并且每个环境的配置信息通常不会修改,所以发现用枚举 做配置项,使用起来比较简洁,不同的环境配置 只需多定义一个枚举值就搞定了。

    其中使用枚举就会涉及到通过传入的值,返回对应的枚举。

    二、通过一个值 ,查询返回对应的枚举(示例代码)

    2.1、枚举类

    @Getterpublic enum CustomType {    TEST("test","测试","111"),    DEV("dev","开发","222");    String typeCode;    String typeName;    String orgId;    CustomType(String typeCode, String typeName, String orgId) {        this.typeCode = typeCode;        this.typeName = typeName;        this.orgId = orgId;    }}

    2.2、常用的枚举方法;values(), ordinal() 和 valueOf() 方法

    enum 定义的枚举类默认继承了 java.lang.Enum 类,并实现了 java.lang.Seriablizable 和 java.lang.Comparable 两个接口。

    values(), ordinal() 和 valueOf() 方法位于 java.lang.Enum 类中:

    • values() 返回枚举类中所有的值。

    • ordinal()方法可以找到每个枚举常量的索引,就像数组索引一样。

    • valueOf()方法返回指定字符串值的枚举常量。

    传入值查询枚举,就是通过values()方法,返回所以枚举,再遍历全部枚举,只要传入的参数值 跟当前枚举的值跟相同,就返回当前枚举;

    2.3、通过传入一个或者多个值,返回对应的枚举

        public CustomType find(String typeCode){        for (CustomType value : CustomType.values()) {            if(typeCode.equals(value.getTypeCode())){                return value;            }        }        //根据自身的业务 查不到可以返回null,或者抛出异常。        return null;    }    public CustomType find(String orgId,String typeCode){        if(orgId == null || typeCode == null){            return null;        }        for (CustomType value : CustomType.values()) {            if(orgId.equals(value.getOrgId()) &&                    typeCode.equals(value.getTypeCode())){                return value;            }        }        //根据自身的业务 查不到可以返回null,或者抛出异常。        return null;    }

    三、查找优化

    每次通过values()方法遍历查找,时间复杂度是O(n),而通过HashMap查找,时间复杂度是O(1)。

    虽说枚举的数量通常都不会很庞大,每次通过values()方法遍历查找速度也很快。用HashMap会多占用一点点内存,但是考虑到这一点内存能从时间复杂度是O(n)降到O(1),这种惠而不费的事,还是可以花时间去优化代码的。

        private static Map orgCustomType = new HashMap<>();    static {        for (CustomType value : CustomType.values()) {            orgCustomType.put(value.getOrgId(),value);        }    }    public CustomType find(String orgId){        return orgCustomType.get(orgId);    }

    到此,关于"Java怎么实现通过值查找对应的枚举"的学习就结束了,希望能够解决大家的疑惑。理论与实践的搭配能更好的帮助大家学习,快去试试吧!若想继续学习更多相关知识,请继续关注网站,小编会继续努力为大家带来更多实用的文章!

    方法 时间 环境 学习 复杂 复杂度 常量 配置 不同 业务 代码 内存 更多 系统 索引 帮助 开发 查询 测试 特殊 数据库的安全要保护哪些东西 数据库安全各自的含义是什么 生产安全数据库录入 数据库的安全性及管理 数据库安全策略包含哪些 海淀数据库安全审计系统 建立农村房屋安全信息数据库 易用的数据库客户端支持安全管理 连接数据库失败ssl安全错误 数据库的锁怎样保障安全 学校监控服务器本地安装 国家网络安全宣传周活动开幕式 网络安全缩写英文 柠檬互联网科技股份有限公司 高端软件开发有哪些类型 广州东秀网络技术有限公司 金酬前程网络技术服务部 公安网络安全管理工作待遇 app软件开发公司郑州 我的手机网络安全密码怎么查 网络安全的四大内容 贵阳蔬菜批发软件开发 广汽本田数据库 网络安全三方面的心得体会 关于开放小区的数据库 互联网大会新奇科技 微博登录数据库异常 福建服务器托管价格表 美国网络安全教育视频 如何利用云服务器挖矿 金山区高科技软件开发代理品牌 东方通jndi数据库配置 数据库加密游戏就打不开 企业云服务器申请注册 南京中兴软件开发大概月薪多少 朝阳区品牌软件开发要求 关系数据库理论中关系的分类 大学生学习网络安全的重要性论文 山东惠普服务器 中国科学院大学图书馆数据库
    0