专业的JAVA编程教程与资源

网站首页 > java教程 正文

Java枚举的高级用法之多键值的映射使用

temp10 2024-09-25 21:10:07 java教程 8 ℃ 0 评论

枚举Enum单映射使用

做Java的各位仁兄姐妹都知道,Java通过HashMap,以及枚举提供了方便的K-V映射功能,例如

但是如果遇到多个键值映射,例如K-K-V的形式怎么办呢?可能有些人会说那还是用HashMap呗,对于需求的满足倒是可以,但是不够优雅直观,可读性不高!下面让我们一睹枚举的高级用法之多键值的映射风采。

Java枚举的高级用法之多键值的映射使用

枚举Enum多键值映射使用

譬如这个四合一智能门锁场景,可能其他微服务或第三方的键值映射是上面单映射那样的,但是由于历史原因或者是自身强迫症使能,总之就是对别人的key不爽,那么我们可以再转换一次,转成简单优雅的1,2,3..等等,此时枚举的多键值可以很友好的支持你的强迫症使能!废话少说,提码来见:

package com.falcon.design.enums;

/**开门类型枚举*/
public enum MoreEnums {
    FACE(1000,  "0","人脸"),
    FINGER(1001,"1","指纹"),
    CARD(1002,  "2","刷卡"),
    KEY(1003,   "3","钥匙");

    private Integer key;
    private String value;
    private String desc;

    MoreEnums(Integer key, String value, String desc) {
        this.key = key;
        this.value = value;
        this.desc = desc;
    }
    public static String getValue(Integer key){
        for (MoreEnums enums : values()){
            if(enums.getKey().intValue() == key.intValue()){
                return enums.value;
            }
        }
        return "";
    }
    public static String getDesc(Integer key){
        for(MoreEnums enums : values()){
            if(enums.getKey().intValue() == key.intValue()){
                return enums.desc;
            }
        }
        return "";
    }
    public static String getDesc(String value){
        for (MoreEnums enums : values()){
            if(enums.getValue().equals(value)){ return enums.desc; }
        }
        return "";
    }

    public Integer getKey() {  return key;  }
    public void setKey(Integer key) { this.key = key;}
    public String getValue() { return value; }
    public void setValue(String value) { this.value = value; }
    public String getDesc() { return desc; }
    public void setDesc(String desc) { this.desc = desc; }

}

只要掌握了这个增强型循环的语法糖在枚举中的使用,那么对于key和value的数量以及获取方式也就变的随心所欲而不逾矩!

相关的代码已在gitee上进行了分享:git@gitee.com:fortunamajor/design.git

原创不易,感觉对自己有帮助的朋友不妨关注赞赏支持,老衲将不甚感激!


Tags:

本文暂时没有评论,来添加一个吧(●'◡'●)

欢迎 发表评论:

最近发表
标签列表