应该如何连接数组流?
How should one concatenate a stream of arrays?
我想通过可变累加器连接数组流。
目前我正在为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);
我想通过可变累加器连接数组流。
目前我正在为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);