#java #java-8 #java-stream
#java #java-8 #java-stream
Вопрос:
У меня есть список объектов, каждый объект имеет логический атрибут. Например,
public class A {
private boolean isAvailable;
}
Я хотел бы выполнить итерацию этого списка, получить значение «isavailable» первого элемента в списке. Если список пуст или равен null, то я хотел бы вернуть значение false.
Могу ли я эффективно выполнять это с потоками Java8?
Комментарии:
1. Показать вашу попытку?
Ответ №1:
Конечно, это возможно с потоками Java:
boolean result = list.stream().findFirst().map(A::isAvailable).orElse(false);
Используйте findFirst()
метод, чтобы получить первое значение списка, если оно присутствует. Сопоставить isAvailable
и вернуть false
, если список пуст.
Я бы настоятельно не рекомендовал использовать null в качестве значения списка.Вместо этого используйте пустой список.
Но если вы хотите сделать это, вы можете использовать Optional
для завершения списка:
boolean result = Optional.ofNullable(list)
.flatMap(l -> l.stream().findFirst().map(A::isAvailable))
.orElse(false);
Комментарии:
1. Или просто
boolean result = list!=null amp;amp; !list.isEmpty() amp;amp; list.get(0).isAvailable();