#java #java-8 #java-stream #lightweight-stream-api
#java #java-8 #java-stream #легкий поток-api
Вопрос:
Есть некоторый Java-код:
List<Call> updatedList = updatingUniquedList
.stream()
.map(s -> {
Call call = callsBufferMap.get(s);
}
return call;
}).collect(Collectors.toList());
Как избежать добавления в окончательный список, если переменная вызова имеет значение null?
Комментарии:
1. Альтернатива
.filter(Objects::nonNull)
isCollectors.filtering(Objects::nonNull, Collectors.toList()
. Это зависит от вашего вкуса.
Ответ №1:
.filter(Objects::nonNull)
перед сбором. Или перепишите его в простой foreach с if .
Кстати, вы можете сделать
.map(callsBufferMap::get)
Комментарии:
1. Или с Java 9 :
List<Call> updatedList = updatingUniquedList .stream() .flatMap(s -> Stream.ofNullable(callsBufferMap.get(s))) .collect(Collectors.toList());
Ответ №2:
Вы можете использовать .filter(o -> o != null)
after map
и before collect
.
Ответ №3:
Есть несколько вариантов, которые вы можете использовать:
- использование метода nonnull в потоке:
.filter(Objects::nonNull)
- использование removeIf из списка:
updatedList.removeIf(Objects::isNull);
Так, например, строки могут выглядеть так:
List<Call> updatedList = updatingUniquedList
.stream()
.map(callsBufferMap::get)
.filter(Objects::nonNull)
.collect(Collectors.toList());
Ответ №4:
Может быть, вы можете сделать что-то вроде этого:
Collectors.filtering(Objects::nonNull, Collectors.toList())