【发布时间】:2015-09-12 13:20:58
【问题描述】:
假设我有以下代码
data.stream()
.map(x -> {
Object a = maybeReturnsNull(x);
return a == null ? defaultValue : a;
})
我有一些函数可能会返回null,我正在将它应用到流的一个元素上。然后,我想确保将任何 null 结果更改为某个默认值。与使用前面定义辅助变量 a 并在 lambda 表达式中使用代码块的示例相比,使用以下示例中的两个映射之间是否有任何显着差异?
data.stream()
.map(x -> maybeReturnsNull(x))
.map(x -> x == null ? defaultValue : x)
是否有关于在何处避免使用带有 lambda 函数的块语句的标准?
【问题讨论】:
-
或
.map(this::maybeReturnsNull).map(Optional::ofNullable).map(o -> o.orElse(defaultValue)) -
@assylias:即使它不会对性能产生影响,我认为单个
.map(x -> Optional.ofNullable(maybeReturnsNull(x)).orElse(defaultValue))应该优于这里的三个映射步骤。但好吧,这仍然是一个品味问题……
标签: java java-8 java-stream map-function