Вы можете использовать
int index = IntStream.range(0, userList.size())
.filter(ix -> userList.get(ix).getUserStatus() == UserStatus.AVAILABLE)
.findFirst().orElse(-1);
Если вы не хотите использовать Stream API или подозреваете, что в списке отсутствует эффективный произвольный доступ, вы можете использовать
int index = -1;
for(ListIterator<Users> i = userList.listIterator(); i.hasNext(); ) {
if(i.next().getUserStatus() == UserStatus.AVAILABLE) {
index = i.previousIndex();
break;
}
}
В качестве примечания, имя класса должно отражать то, что представляет отдельный экземпляр класса, то есть User
вместо Users
, когда один объект представляет одного пользователя. Кроме того, нет необходимости передавать имена enum
констант себе. Они уже знают свои имена.
Когда вы объявляете тип как
public enum UserStatus {
CREATED,
AVAILABLE,
CHECKIN,
CHECKOUT,
ON_TRIP,
UNAVAILABLE
}
, вызов UserStatus.AVAILABLE.name()
выдаст вам строку "AVAILABLE"
, а вызов UserStatus.valueOf("AVAILABLE")
вернет константу UserStatus.AVAILABLE
. Вам не нужно реализовывать такую логику c самостоятельно.