将Java8Stream转换为数组的最简单/最快捷的方法是什么?

推荐答案

最简单的方法是将toArray(IntFunction<A[]> generator)方法与数组构造函数引用一起使用.这是API documentation for the method条建议.

String[] stringArray = stringStream.toArray(String[]::new);

它所做的是找到一个以整数(大小)为参数的方法,并返回String[],这正是new String[](的重载之一)所做的.

你也可以写自己的IntFunction:

Stream<String> stringStream = ...;
String[] stringArray = stringStream.toArray(size -> new String[size]);

IntFunction<A[]> generator的用途是将数组大小的整数转换为新array.

示例代码:

Stream<String> stringStream = Stream.of("a", "b", "c");
String[] stringArray = stringStream.toArray(size -> new String[size]);
Arrays.stream(stringArray).forEach(System.out::println);

输出:

a
b
c

Java相关问答推荐

Java Swing绘制gif作为多个JSYS和JLabels的背景

Spring安全实现多个SQL表身份验证

Saxon 9:如何从Java扩展函数中的net.sf.saxon.expr. XPathContent中获取声明的变量

int Array Stream System. out. print方法在打印Java8时在末尾添加% sign

如何粘合(合并)文件Lucene?

如何在返回bigint []值的子查询中使用any?

取消按钮,但没有任何操作方法引发和异常

@ IdClass with @ Inheritance(策略= InheritanceType. SINGLE_TABLE)

try 创建一个对象,使用它,然后使用一条语句将其存储为列表

我无法获取我的Java Spring应用程序的Logback跟踪日志(log)输出

返回响应时,CamelCase命名约定不起作用

在Spring终结点中,是否可以同时以大写和小写形式指定枚举常量?

由于 list 中的权限错误,Android未生成

try 判断可选参数是否为空时出现空类型安全警告

Javadoc在方法摘要中省略方法

继续收到错误SQLJDBC EXCEPTION执行";org.springframework.dao.InvalidDataAccessResourceUsageException:&

X=x*0.90;产生有损转换误差.X*=0.90;不是.为什么?

使用for循环时出现堆栈溢出错误,但如果使用if块执行相同的操作,则不会产生错误

如何使用Rascal Evaluator从编译的JAR访问Rascal函数?

";重复键的值提示唯一约束«;livre_genre_pkey»";例外