当前位置: 首页 > 面试题库 >

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

马飞
2023-03-14
问题内容

说我有以下代码

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函数中使用块语句的标准?


问题答案:

都可以。选择一个对您来说更易读的。如果计算能够自然分解,就像这样,那么多个映射可能更易读。某些计算不会自然分解,在这种情况下,您将陷入困境。在任何一种情况下,您都不必担心一个人的绩效要比另一个人高得多;这很大程度上是一个不考虑的问题。



 类似资料:
  • 你好,我的问题与Java8非常相似:流映射同一个流中的两个属性,但由于某些原因,我无法让代码正常工作。 所以就像这个问题一样,假设我有一个班级 所以我想从列表中组合这些

  • 我需要将Java转换为的实例(包括映射内容) 我应该用什么来代替来使此代码可编译?

  • 我有一个实体,看起来像这样: 输入数据是一个

  • 在java中,我会使用: 多输入.add输入路径(conf, path, inputFormatClass, 映射器类) 以添加多个输入,并为每个输入使用不同的映射器。 现在我正在使用python在hadoop中编写一个流作业,可以做类似的工作吗?

  • 我有一些代码需要帮助...我正在尝试使用两个地图作为源并同时使用java lambdas构建地图 我可以用你们在上面看到的foreach做到这一点,但我试图用lambdas做到这一点。。。像这样的 我想要的输出是这样的 但我无法理解

  • 我有2个微服务:我们称它们为A和B。 由B处理的实体(其中引用了a的实体)被实现为简单的长id(例如groupId) 我想要实现的是使用mapstruct填充B(由A持有)的缺失组数据。到目前为止,我尝试使用@AfterMapping函数向a请求缺失的数据。我的映射器是: 给我映射功能的实现接口是: 生成的代码的问题在于,将实体列表映射到DTO列表的函数对每个实体使用EntityToToTo,导致