如何将Java 8 Stream转换为数组?

问题:

将Java 8 Stream转换为数组的最简单/最短的方法是什么?

回答:

最简单的方法是使用数组构造函数引用的toArray(IntFunction<A[]> generator)方法。这是在API documentation for the method中建议的

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

它的作用是找到一个以整数(size)为参数的方法,并返回一个String[],这正是new String[]的一个重载。
你也可以写自己的IntFunction

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

IntFunction<A[]> generator的目的是将整数(数组的大小)转换为新的数组。
示例代码:

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

打印:

a
b
c

 
 
Code问答: http://codewenda.com/topics/python/
Stackoverflow: How to Convert a Java 8 Stream to an Array?

*转载请注明本文链接以及stackoverflow的英文链接

发表评论

电子邮件地址不会被公开。 必填项已用*标注

− 1 = 4