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

时间:2019-04-30 18:54:30

标签: java arrays java-8 java-stream

我有一个List<TestBuilder> testBuilders; Test具有Test类型的功能构建

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

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

我不确定collect function中会发生什么

2 个答案:

答案 0 :(得分:4)

您可以使用

whatever.stream().toArray(WhatEverClass[]::new);

根据类型“ {whatever”的对象流”为类型WhatEverClass的对象创建数组。因此:无需collect()

答案 1 :(得分:0)

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

#!/usr/bin/env xxx

lambda表达式Test[] array = testBuilders.stream().map(Test::build()).toArray(size -> new Test[size]); 应替换为方法引用:

size -> new Test[size]