#java #list #object #enums #return
#java #Список #объект #перечисления #Возврат
Вопрос:
Я новичок в 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'},
у меня есть несколько классов enums, которые я хотел бы использовать
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;
}
Я изо всех сил пытаюсь придумать способы перебора listAnimal
и проверить значение угрозы в деталях объекта Animal, например «Критическая угроза», и использовать перечисление для возврата значения 6 в соответствии с его значением AValue.
Большое спасибо
Комментарии:
1. Есть ли у вас подобный метод
LevelOfEndangerment getEndargement()
в вашемAnimal
классе?
Ответ №1:
Если у вас есть single Animal
, то вы можете преобразовать endangerment
string в 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());
Комментарии:
1. в этом втором примере, откуда берутся значения .getEndangerment?
2. Это лямбда-выражение, пожалуйста, ознакомьтесь с этим документом docs.oracle.com/javase/tutorial/java/javaOO / … @user14087442