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());
    }
  }
}

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

(0)

相关推荐

  • java 中枚举类enum的values()方法的详解

    java 中枚举类enum的values()方法的详解 前言: 关于枚举,相信使用的已经很普遍了,现在主要写的是枚举中的一个特殊方法,values(), 为什么说特殊呢,因为在Enum 的 API 文档中也找不到这个方法.接下来就看看具体的使用. 理论上此方法可以将枚举类转变为一个枚举类型的数组,因为枚举中没有下标,我们没有办法通过下标来快速找到需要的枚举类,这时候,转变为数组之后,我们就可以通过数组的下标,来找到我们需要的枚举类.接下来就展示代码了. 首先是我们自己的枚举类. public e

  • java 枚举enum的用法(与在switch中的用法)

    实际开发中,很多人可能很少用枚举类型.更多的可能使用常量的方式代替.但枚举比起常量来说,含义更清晰,更容易理解,结构上也更加紧密.看其他人的博文都很详细,长篇大论的,这里理论的东西不说了,一起看看在实际开发中比较常见的用法,简单明了. 看看枚举类 /** * 操作码类 * @author kokJuis * @version 1.0 * @date 2017-3-6 */ public enum Code { SUCCESS(10000, "操作成功"), FAIL(10001, &q

  • Java的枚举enum示例详解

    一. 什么是枚举 枚举是一种数据类型,具有集合的一些特点,可以存放多个元素,但存储对象有限且固定,枚举也有比较常见的使用场景,如我们需要表达性别(男.女),颜色(红.黄.蓝),星期(星期一.星期二...星期日),四季(春.夏.秋.冬),地理位置(东.西.南.北),方向(前.后.左.右)等,这些场景都非常适合枚举. 二. 定义枚举 java中使用enum来定义枚举,和class,interface具有同样的等级,(注意是enum,而不是Enum),定义枚举可以有两种情况 第一种:默认构造器(空构造

  • java中enum的用法

    本文实例讲述了java中enum的用法.分享给大家供大家参考.具体分析如下: 1. 基本用法 复制代码 代码如下: enum Day {     SUNDAY, MONDAY, TUESDAY, WENDSDAY, THURSDAY, FRIDAY, SATURDAY; } 枚举是常量,所以应该用大写. 2. 枚举是对象 枚举隐含地继承了java.lang.Enum,所以它具有java.lang.Enum的属性和方法.遍历枚举: 复制代码 代码如下: public class Main {   

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

    1.ZjlxEnum.java public enum ZjlxEnum implements IEnum { SFZ("1", "居民身份证"), XGZM("2", "香港特区护照/身份证明"), AMZM("3", "澳门特区护照/身份证明"), TWTXZ("4", "台湾居民来往大陆通行证"), JWJZZ("5",

  • PHP实现通过二维数组键值获取一维键名操作示例

    本文实例讲述了PHP实现通过二维数组键值获取一维键名操作.分享给大家供大家参考,具体如下: 有如下既定数组: $inviteType = [ '扫码' => [ 'type' => 0, 'point' => 5, ], '评论' => [ 'type' => 1, 'point' => 5, ], '分享' => [ 'type' => 2, 'point' => 10, ], '邀请' => [ 'type' => 3, 'point'

  • Java枚举(enum) 详解7种常见的用法

    JDK1.5引入了新的类型--枚举.在 Java 中它虽然算个"小"功能,却给我的开发带来了"大"方便.  用法一:常量 在JDK1.5 之前,我们定义常量都是: public static fianl.... .现在好了,有了枚举,可以把相关的常量分组到一个枚举类型里,而且枚举提供了比常量更多的方法. public enum Color { RED, GREEN, BLANK, YELLOW } 用法二:switch JDK1.6之前的switch语句只支持int

  • Java使用RedisTemplate如何根据前缀获取key列表

    目录 使用RedisTemplate根据前缀获取key列表 批量获取 key 批量获取 value RedisTemplate如何获取符合要求的key 如图:reds中存了三条数据 我写的test如下 使用RedisTemplate根据前缀获取key列表 我们在使用 Redis 的时候,会需要获取以某个字符串开头的所有 key 批量获取 key 根据前缀获取 key 代码如下: /**  * 根据前缀获取所有的key  * 例如:pro_*  */ public Set<String> get

  • Java基础之枚举Enum类案例详解

    一.文章序言 Java中引用类型:数组.类.接口.枚举.注解 枚举这个既熟悉又陌生的东西具体再哪里可以使用呢? 什么是枚举? 枚举是一个引用类型,枚举就是一个规定了取值范围的变量类型. 枚举变量不能使用其他的数据,只能使用枚举中常量赋值.提高程序安全性: //格式: public enum 枚举名{ //枚举的取值范围 //枚举中可以生命方法 } 枚举的使用场景介绍? 1.最常见的情况如星期,相关变量我们会在Java里面重复使用,在这里我们就可以来定义一个叫做"星期"的枚举. publ

  • Java枚举类型enum的详解及使用

     Java枚举类型enum的详解及使用 最近跟同事讨论问题的时候,突然同事提到我们为什么Java 中定义的常量值不采用enmu 枚举类型,而采用public final static 类型来定义呢?以前我们都是采用这种方式定义的,很少采用enum 定义,所以也都没有注意过,面对突入起来的问题,还真有点不太清楚为什么有这样的定义.既然不明白就抽时间研究下吧. Java 中的枚举类型采用关键字enum 来定义,从jdk1.5才有的新类型,所有的枚举类型都是继承自Enum 类型.要了解枚举类型,建议大

  • 秒懂Java枚举类型(enum)

    理解枚举类型 枚举类型是Java 5中新增特性的一部分,它是一种特殊的数据类型,之所以特殊是因为它既是一种类(class)类型却又比类类型多了些特殊的约束,但是这些约束的存在也造就了枚举类型的简洁性.安全性以及便捷性.下面先来看看什么是枚举?如何定义枚举? 枚举的定义 上述的常量定义常量的方式称为int枚举模式,这样的定义方式并没有什么错,但它存在许多不足,如在类型安全和使用方便性上并没有多少好处,如果存在定义int值相同的变量,混淆的几率还是很大的,编译器也不会提出任何警告,因此这种方式在枚举

  • java枚举类型-Enum

    目录 前言 应用 定义 基本Enum特性 Enum的静态导入 Enum中添加新方法 Switch语句中的Enum Enum的继承 EnumSet的使用 EnumMap的使用 常量相关方法 枚举值向枚举类型转换 前言 枚举是 Java1.5 引入的新特性,通过关键字 enum 来定义枚举类. 应用 定义 关键字enum可以将一组具名的值的有限集合创建为一种新的类型,而这些具名的值可以作为常规的程序组件使用. enum WeekEnum { Monday, Tuesday, Wednesday, T

  • 深入谈谈java的枚举(enum)类型

    前言 在大家日常编程中,往往存在着这样的"数据集",它们的数值在程序中是稳定的,而且"数据集"中的元素是有限的.例如星期一到星期日七个数据元素组成了一周的"数据集",春夏秋冬四个数据元素组成了四季的"数据集".在java中如何更好的使用这些"数据集"呢?因此枚举便派上了用场 枚举其实就是一种类型,跟int, char 这种差不多,就是定义变量时限制输入的,你只能够赋enum里面规定的值. 枚举(enum)实

随机推荐