在java流中使用多个映射函数与映射中的块语句

说我有以下代码

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函数的块语句?

要么没事。 选择一个看起来更具可读性的那个。 如果计算自然地分解,就像这样,那么多个映射可能更具可读性。 有些计算不会自然地分解,在这种情况下你会被困在前者身上。 在任何一种情况下,你都不应该担心一个人的表现要比另一个人高得多; 这在很大程度上是不考虑的。

java提供了一个专用的API来处理“null”。

https://docs.oracle.com/javase/8/docs/api/java/util/Optional.html