java枚举enum,根据value值获取key键的操作

 更新时间:2021年02月24日 09:47:40   作者:jajave  
这篇文章主要介绍了java枚举enum,根据value值获取key键的操作,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧

1.ZjlxEnum.java

public enum ZjlxEnum implements IEnum {
  SFZ("1", "居民身份证"),
  XGZM("2", "香港特区护照/身份证明"),
  AMZM("3", "澳门特区护照/身份证明"),
  TWTXZ("4", "台湾居民来往大陆通行证"),
  JWJZZ("5", "境外永久居住证"),
  HZ("6", "护照"),
  QT("7", "其他"); 
  private String value;
  private String label;   
  public String getValue() {
    return this.value;
  } 
  public String getLabel() {
    return this.label;
  }
}

2.调用方式:

private String getZjlx(String zjlxCn) {
  Optional<ZjlxEnum> m1 = EnumUtil.getEnumObject(ZjlxEnum.class, e -> e.getLabel().equals(zjlxCn));
  return m1.isPresent() ? m1.get().getValue() : null;
}

3.EnumUtil.java

public class EnumUtil { 
  private static Map<Class, Object> map = new ConcurrentHashMap<>(); 
  /**
   * 根据条件获取枚举对象
   *
   * @param className 枚举类
   * @param predicate 筛选条件
   * @param <T>
   * @return
   */
  public static <T> Optional<T> getEnumObject(Class<T> className, Predicate<T> predicate) {
    if (!className.isEnum()) {
      return null;
    }
    Object obj = map.get(className);
    T[] ts = null;
    if (obj == null) {
      ts = className.getEnumConstants();
      map.put(className, ts);
    } else {
      ts = (T[]) obj;
    }
    return Arrays.stream(ts).filter(predicate).findAny();
  }
}

补充:Java遍历枚举(Enum)的Value和相对应的Index

遍历枚举:

public class ColorIndexTest { 
  @SuppressWarnings("resource")
  public static void main(String[] args) {
    // TODO Auto-generated method stub
    HSSFColorPredefined[] allColor = HSSFColorPredefined.values();
    for(int i = 0;i < allColor.length;i++) {
      System.out.println(allColor[i].name() + " == " + allColor[i].ordinal());
    }
  }
}

以上为个人经验,希望能给大家一个参考,也希望大家多多支持脚本之家。如有错误或未考虑完全的地方,望不吝赐教。

相关文章

  • RocketMQ消息过滤与查询的实现

    RocketMQ消息过滤与查询的实现

    这篇文章主要介绍了RocketMQ消息过滤与查询的实现方式,具有很好的参考价值,希望对大家有所帮助。如有错误或未考虑完全的地方,望不吝赐教
    2021-07-07
  • jar中VO的探究

    jar中VO的探究

    这篇文章主要介绍了jar中VO的探究的相关资料,需要的朋友可以参考下
    2023-11-11
  • 使用spring+maven不同环境读取配置方式

    使用spring+maven不同环境读取配置方式

    这篇文章主要介绍了使用spring+maven不同环境读取配置方式,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教
    2023-08-08
  • Java双色球系统开发详解

    Java双色球系统开发详解

    这篇文章主要为大家详细介绍了Java双色球系统的开发,超级简单的逻辑,文中示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2021-09-09
  • 基于字符串常用API(详解)

    基于字符串常用API(详解)

    下面小编就为大家带来一篇基于字符串常用API(详解)。小编觉得挺不错的,现在就分享给大家,也给大家做个参考。一起跟随小编过来看看吧
    2017-06-06
  • Java单元测试工具之JUnit的使用

    Java单元测试工具之JUnit的使用

    本篇文章主要详细介绍单元测试工具JUnit的使用,文章中有详细的代码实例,有一定的参考价值,需要的朋友可以参考阅读
    2023-04-04
  • Java中的IO读写原理详解

    Java中的IO读写原理详解

    这篇文章主要介绍了Java中的IO读写原理,IO是指输入和输出操作的技术,它提供了一组用于读取和写入数据的类,以及用于处理字符和字节数据的接口,这些类和接口可以用于读取和写入文件、网络流、内存缓冲区等各种数据源和目标,需要的朋友可以参考下
    2023-08-08
  • 基于strict-origin-when-cross-origin问题的解决

    基于strict-origin-when-cross-origin问题的解决

    这篇文章主要介绍了基于strict-origin-when-cross-origin问题的解决方案,具有很好的参考价值,希望对大家有所帮助。如有错误或未考虑完全的地方,望不吝赐教
    2023-03-03
  • 解析spring事务管理@Transactional为什么要添加rollbackFor=Exception.class

    解析spring事务管理@Transactional为什么要添加rollbackFor=Exception.class

    这篇文章主要介绍了spring事务管理@Transactional为什么要添加rollbackFor=Exception.class,本文给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友可以参考下
    2021-11-11
  • Spring Boot项目中集成微信支付v3

    Spring Boot项目中集成微信支付v3

    这篇文章主要介绍了Spring Boot项目中集成微信支付v3,帮助大家更好的理解和使用spring boot框架,感兴趣的朋友可以了解下
    2021-01-01

最新评论