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

Bri*_*ker 15 java java-8 java-stream map-function

说我有以下代码

data.stream()
    .map(x -> {
        Object a = maybeReturnsNull(x);
        return a == null ? defaultValue : a;
    })
Run Code Online (Sandbox Code Playgroud)

我有一些可能正在返回的函数,null我将它应用于流的一个元素.然后我想确保将任何null结果更改为某个默认值.与使用上一个定义辅助变量a并在lambda表达式中使用代码块的示例相比,使用两个映射(如下例)之间是否存在任何显着差异?

data.stream()
    .map(x -> maybeReturnsNull(x))
    .map(x -> x == null ? defaultValue : x)
Run Code Online (Sandbox Code Playgroud)

有没有标准在哪里或不避免使用lambda函数的块语句?

Bri*_*etz 14

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