我有这样的枚举类:
public enum Severity {
HIGH("High level it is ", RED, DARK_RED),
MEDIUM("Medium level it is ", AMBER, LIGHT_YELLOW),
LOW("Low level it is ", GREEN, DARK_GREEN);
private String value;
private List<Colors> color;
Severity(String value, Color... colors) {
this.value = value;
this.color = Arrays.asList(colors);
}
public static List<String> getSeverityKeys() {
return EnumSet.allOf(Severity.class).stream()
.map(Severity::name)
.collect(Collectors.toList());
}
public static List<String> getSeverityValues() {
return EnumSet.allOf(Severity.class).stream()
.map(Severity::getValue)
.collect(Collectors.toList());
}
public static Severity getDescriptionByColor(String color) {
return EnumSet.allOf(Severity.class).stream()
.filter(severity -> Severity.getToolDomainValues().equals(color))
.findFirst()
.orElse(null);
}
public String getValue() {
return value;
}
public List<Color> getColor() {
return color;
}
}
输入:DARK_RED
输出:高电平
要么
输入:DARK_GREEN
输出:低电平
如何使用JAVA Stream功能实现此目标
我正在尝试修复方法-getDescriptionByColor(字符串颜色)
我建议颜色是枚举的Color
,您可以适应
您需要遍历Severity.values()
并查找具有所需值的变量,然后获取查找变量的字符串(第一个参数):
static String getString(Color value) {
return Arrays.stream(Severity.values())
.filter(severity -> severity.getColorB().equals(value))
.map(Severity::getString)
.findFirst().orElse(null);
}
采用
System.out.println(Severity.getString(Color.DARK_RED)); //High level it is
System.out.println(Severity.getString(Color.DARK_GREEN)); // Low level it is
本文收集自互联网,转载请注明来源。
如有侵权,请联系 [email protected] 删除。
我来说两句