好得很程序员自学网

<tfoot draggable='sEl'></tfoot>

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

1.ZjlxEnum.java

?

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

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.调用方式:

?

1

2

3

4

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

?

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

20

21

22

23

24

25

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

遍历枚举:

?

1

2

3

4

5

6

7

8

9

10

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

     }

   }

}

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

原文链接:https://blog.csdn.net/u013165110/article/details/98206437

查看更多关于java枚举enum,根据value值获取key键的操作的详细内容...

  阅读:18次