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

标签 java java-8 java-stream map-function

假设我有以下代码

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)

是否有关于在何处避免将 block 语句与 lambda 函数一起使用的标准?

最佳答案

哪个都好。选择一个对你来说更易读的。如果计算自然分解,就像这个一样,那么多张 map 可能更具可读性。有些计算不会自然分解,在这种情况下,您将陷入前者。在这两种情况下,您都不应该担心一个比另一个的性能要好得多;这在很大程度上是不考虑的。

关于java - 在 java 流中的映射中使用多个映射函数与 block 语句,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31058755/

相关文章:

java - 对 int 数组列表进行分组

java - 在某些情况下使用 Java Stream 计算唯一字符并验证 String

Java HashMap : get all keys greater than X value

java - 基于字符串的模式数组对字符串进行排序

Java8无符号算术

java - EhCache + hibernate

java - CompletableFuture runAsync 与 SupplyAsync,何时选择其中之一?

java - dispose() 与 setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE) 不同

java - find_java.exe 无法识别 - 在 Android SDK 管理器中...同时安装了 Java 8 更新

java - 在 Java 8+ 流中是否有等同于 break 的东西?