如何根据Java枚举的value值查询对应的key键?

2026-04-19 14:011阅读0评论SEO资源
  • 内容介绍
  • 文章标签
  • 相关推荐

本文共计405个文字,预计阅读时间需要2分钟。

如何根据Java枚举的value值查询对应的key键?

java

1.ZjlxEnum.java

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

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

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

如何根据Java枚举的value值查询对应的key键?

本文共计405个文字,预计阅读时间需要2分钟。

如何根据Java枚举的value值查询对应的key键?

java

1.ZjlxEnum.java

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

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

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

如何根据Java枚举的value值查询对应的key键?