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