java enumerates enum and obtains key key according to value value

  • 2021-08-28 20:05:51
  • OfStack

1.ZjlxEnum.java


public enum ZjlxEnum implements IEnum {
  SFZ("1", " Resident identity card "),
  XGZM("2", " HKSAR passport / Identification "),
  AMZM("3", " Macao SAR passport / Identification "),
  TWTXZ("4", " Mainland Travel Permit for Taiwan Residents "),
  JWJZZ("5", " Overseas permanent residence permit "),
  HZ("6", " Passport "),
  QT("7", " Others "); 
  private String value;
  private String label;   
  public String getValue() {
    return this.value;
  } 
  public String getLabel() {
    return this.label;
  }
}

2. Call by:


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<>(); 
  /**
   *  Get enumerated objects according to conditions 
   *
   * @param className  Enumeration class 
   * @param predicate  Screening criteria 
   * @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();
  }
}

Supplement: Value of Java traversal enumeration (Enum) and corresponding Index

Traversal enumeration:


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

Related articles: