如何将流的结果收集到 Java 8 中的自定义对象数组中

5 java arrays java-8 java-stream

我有一个List<TestBuilder> testBuilders; 测试,它有一个测试类型的函数构建

我做到了testBuilders.stream().map(Test::build()).collect()

我想收集上面的array of Test i.e Test[]

我不确定里面会放什么collect function

Nik*_*las 6

使用终端操作Stream::toArray将项目序列打包到数组中。但是,您必须定义一个提供的生成器IntFunction<A[]>来分配返回数组的类型:

Test[] array = testBuilders.stream().map(Test::build).toArray(size -> new Test[size]);
Run Code Online (Sandbox Code Playgroud)

lambda 表达式size -> new Test[size]应替换为方法引用:

Test[] array = testBuilders.stream().map(Test::build).toArray(Test[]::new);
Run Code Online (Sandbox Code Playgroud)


Gho*_*ica 5

您可以使用

whatever.stream().toArray(WhatEverClass[]::new);
Run Code Online (Sandbox Code Playgroud)

WhatEverClass基于该类型的“任何”对象流为该类型的对象创建一个数组。因此:不需要collect()任何东西。