Итерация списка ищет логический атрибут, возвращает значение по умолчанию false - PullRequest
0 голосов
/ 25 марта 2019

У меня есть список объектов, каждый объект имеет логический атрибут. Например,

public class A {
   private boolean isAvailable;
}

Я бы хотел перебрать этот список, чтобы получить значение «isavailable» первого элемента в списке. Если список пуст или равен нулю, я хотел бы вернуть false.

Могу ли я сделать это эффективно с потоками Java8?

1 Ответ

1 голос
/ 25 марта 2019

Конечно, это возможно с Java Streams:

boolean result = list.stream().findFirst().map(A::isAvailable).orElse(false);

Используйте метод findFirst(), чтобы получить первое значение в списке, если оно присутствует. Карта isAvailable и возврат false, если список пуст.

Я бы настоятельно не рекомендовал использовать нулевое значение в качестве значения списка. Вместо этого использовать пустой список.

Но если вы хотите сделать это, вы можете использовать Optional, чтобы обернуть список:

boolean result = Optional.ofNullable(list)
        .flatMap(l -> l.stream().findFirst().map(A::isAvailable))
        .orElse(false);
...