В списке итераций ищем логический атрибут, возвращаем значение false по умолчанию

#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();