下面的代码将属性薪资为null的NPE抛出。类Person具有以下属性: string: name,Integer: age,Integer:salary可以在这里为空。我想要创建一个薪水列表。
persons.stream().mapToDouble(Person::getSalary).boxed().collect(Collectors.toList())
在这里,我必须在结果列表中保留空值。null不能替换为0。
发布于 2018-04-05 19:28:48
我认为您可以使用map而不是mapToDouble以及三元操作符:
List<Double> salaries = persons.stream()
.map(Person::getSalary)
.map(s -> s == null ? null : s.doubleValue())
.collect(Collectors.toList())发布于 2018-04-05 19:21:41
如果我正确理解,您希望将每个属性值转换为Double (如果它不是null),或者如果它是null,则将其保留为null。所以就这么说吧:
Integer prop = value.getProperty();
return (prop != null) ? prop.doubleValue() : null;您可以将其表示为lambda,并将其传递给map()。(留作读者练习。)
https://stackoverflow.com/questions/49679567
复制相似问题