java - 应该如何连接数组流?

标签 java arrays collections java-stream fold

我想通过可变累加器连接数组流。

目前我正在为 Stream<Foo[]> 执行以下操作:

Foo[] concatenation = streamOfFooArrays.collect(Collector.of(
    ArrayList<Foo>::new,
    (acc , els ) -> {acc.addAll(Arrays.asList(els));},
    (acc1, acc2) -> {acc1.addAll(acc2); return acc1;},
    acc -> acc.toArray(new Foo[x.size()])
));

然而,对于感觉非常普遍有用的东西,令人失望的是标准库没有提供更直接的东西。

我是否忽略了什么,或者是否有更好的方法?

最佳答案

您可以使用 flatMap将数组的元素展平为 Stream<Foo>然后使用 toArray 生成输出数组:

Foo[] concatenation = streamOfFooArrays.flatMap(Arrays::stream)
                                       .toArray(Foo[]::new);

关于java - 应该如何连接数组流?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39344829/

相关文章:

java.sql.SQLException : Io exception: The Network Adapter could not establish the connection

java - 如何使用stream/ifPresent对java.util.Set中的每个项目执行操作?

arraylist - 有没有办法使用Java 8中的数据流将由特定字符描绘的许多多行字符串收集到Arraylist中?

java - 将 jbutton 和 jlabel 数组添加到 jpanel 数组到框架中时出现问题

java - 在 findFirst() 之前使用 sorted() 流式传输不再懒惰

java - 同步方法会抛出EOF异常吗?

C:如何将不同大小的文本文件的每一行存储到 int 数组中?

arrays - 有没有办法对 Swift 数组执行批量更新?

arrays - 具有多个范围的索引数组

Java Iterator循环一次,从中间开始