java - 在数组映射期间将 lambda 替换为 flatMap 中的方法引用

标签 java lambda java-8 functional-programming method-reference

假设我们有一个 Customer 类:

public class Customer {
    private Car[] cars;
    // getter, setter, constructor
}

以及我们需要在汽车上映射的客户集合。

目前我正在这样做:

Collection<Customer> customers = ...
customers.stream().flatMap(
        customer -> Arrays.stream(customer.getCars())
)...

它运行良好,但代码看起来不优雅。我真的很想用使用通常看起来更具可读性和更紧凑的方法引用的代码替换它。但是使用数组类型的字段就很难了。

问题有什么方法可以增强 flatMap 调用,使其更易读/更紧凑/更清晰?

最佳答案

您可以将 flatMap 调用拆分为两个调用 - mapflatMap - 每个调用都接收一个方法引用:

Collection<Customer> customers = ...
customers.stream()
         .map(Customer::getCars)
         .flatMap(Arrays::stream)...

关于java - 在数组映射期间将 lambda 替换为 flatMap 中的方法引用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47923096/

相关文章:

用于数据转换的 Java Functions 与 Spring Converter

java在.jar中使用.png文件

java - 使用 JUI 检测图像中的黑色圆圈(不仅仅是像素)

java - 是否有类似于 Spring 的 CachingConnectionFactory 的实现,它也会关闭空闲连接,直到再次需要它们为止?

java - 能够在 Java 8 lambda 表达式中有效使用最终变量有什么好处

java - 将国家/地区域功能转换为 Java8 Lambda

java - 集合排序(空列表()): cannot infer type-variable

java - 以编程方式调用 JSP 解析器

python - 如何在 Pyspark 的 lambda 函数中附加 Dataframe 的特定列?

c# - 按多个条件拆分列表