Как избежать повторения списка при нулевом элементе - PullRequest
0 голосов
/ 13 марта 2020

Я искал решение, когда список содержит ноль элементов, и избегал повторения в stream().filter() лямбда-функции, например:

List<Person> list = new ArrayList<>(); 
list.stream().filter(element -> element.getProperty().equals("bla").findFirst().get();

Тогда программа выдает NullPointerException, если список имеет нулевой размер, но он не был нулевым.

Поэтому я использовал традиционное решение, чтобы проверить, был ли список пуст как:

if(list.size()> 0 ) 
  list.stream.filter( .....

Знаете ли вы другое решение без использования традиционной проверки?

Обновление

Извините за отчет, исключение, фактически, исключение было

java .util.NoSuchElementException: Нет текущее значение

Вместо NullPointerExcption.

Обновление 2

Поэтому, как сказал VGR, я улучшу код

List<Person> list = new ArrayList<>(); 
list.stream().filter(element -> element.getName().equals("bla").findFirst().get();

И класс Person:

public class Person { 
    String name;
    public getName(){ 
        return this.name;
    }
}

Ответы [ 2 ]

3 голосов
/ 13 марта 2020

Вы можете использовать Optional#ifPresent:

list.stream()
    .filter(element -> element.getProperty().equals("bla"))
    .findFirst()
    .ifPresent(/** process element if exists */);
0 голосов
/ 16 марта 2020

Я решил этот вопрос, выполнив orElseGet().

...