有没有一种方法可以循环遍历对象列表,然后根据每个对象的枚举值返回一个值



我是java新手,有一个名为listAnimal的对象列表,下面是一个示例:

[Animal{name='Atlantic', type='Actinopterygii', scienName='sturio', country='Global', endangerment='Critical Endangerment', popTrend='Decreasing'}, Animal{name='eel', type='Actinopterygii', scienName='Anguilla anguilla', country='Europe', endangerment='Critical Endangerment', popTrend='Decreasing'},

我有一些枚举类,我想使用

public enum LevelOfEndangerment {
/**
* an enum to give values to levels of endangerment
*/
EXTINCT(8), NEAR_EXTINCT(7), CRITICAL_ENDANGERMENT(6), ENDANGERED(5), SOMEWHAT_VULNERABLE(4), NEAR_VULNERABLE(3),
NON_CONCERN(2), DATA_DEFICIENT(1), NOT_EVALUATED(0);
private int value;
LevelOfVulnerability (int aValue) {
this.value = aValue;
}
public int getValue () {
return value;
}

我正在努力想办法循环通过CCD_ 2并检查动物对象细节中的危害值,例如";严重危害";并使用枚举根据其aValue返回值6。

非常感谢

如果您有一个Animal,那么您可以将endangerment字符串转换为ENUM,并获得值

String eng = animal.getEndargement();
LevelOfEndangerment engVal = LevelOfEndangerment.valueOf(eng.replace(" ","_").toUpperCase());
Integer value = engVal.getValue();

如果你有Animal的列表,你可以流式传输并获得值

List<Integer> values = listAnimal.stream()
.map(an-> LevelOfEndangerment.valueOf(an.getEndargement().replace(" ","_").toUpperCase())
.map(LevelOfEndangerment::getValue)
.collect(Collectors.toList());

最新更新