Что касается меня, то ваш способ пропустить null
элементов довольно хорош.
Однако, если вы хотите сделать это функционально, тогда вообще не возвращайте null
. Верните Optional
вместо:
public Optional<String> parse(String s){
try{
return Optional.of(<parsed_value>);
} catch (Exception e ){
log(e);
}
return Optional.empty();
}
Java 1.8 решение:
public List<String> validator(List<String> values) {
return values.stream()
.map(this::parse)
.filter(Optional::isPresent)
.map(Optional::get)
.collect(Collectors.toList());
}
Java 1.9 + решение: (как уже предложено @ Holger уже):
public List<String> validator(List<String> values) {
return values.stream()
.map(this::parse)
.flatMap(Optional::stream)
.collect(Collectors.toList());
}