在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