#java #java-stream
Вопрос:
В моем методе ниже переменная n
может быть null, и если она равна null, я хочу вернуть пустой список, например, что-то вроде List.of
. Как я могу изменить приведенный ниже метод, чтобы гарантировать, что при обнаружении значения null List
возвращается пустое значение, а не удаляется? Я попытался использовать filter
то, что я прокомментировал ниже, но это просто удаляет все случаи, когда найдено значение null.
private List<Account> getNames(MetaData metadata){
return metadata.getNames()
.stream()
.map(n -> createAccount(n, metadata.getType()))
//.filter(n -> n.getFinalName() != null)
.collect(Collectors.toList());
}
private Account createAccount(String n, Metadata metadata){...}
Комментарии:
1. Можете ли вы поделиться своим
Account
уроком? Это кажется правильным для решения проблемы.2. Ваш вопрос не совпадает с кодом. Вы не можете вернуть пустой список, так как ваш потоковый код имеет дело с
Account
объектами, которые предположительно не являются списками. Может быть, я неправильно понимаю, что ты пытаешься сделать. Некоторые входные и выходные данные могут помочь.
Ответ №1:
Вы можете использовать тернарный оператор
return metadata.getNames()
.stream()
.map(n -> n!=null ? createAccount(n, metadata.getType()) : /* else do something */)
.collect(Collectors.toList());