import java.util.List;
import java.util.stream.Stream;
class Main {
public static void main(String[] args) {
// Create a stream of strings from list of strings
Stream<String> myStreamOfStrings = List.of("lala", "foo", "bar").stream();
// Convert stream to array by using toArray method
String[] myArrayOfStrings = myStreamOfStrings.toArray(String[]::new);
// Print results
for (String string : myArrayOfStrings) {
System.out.println(string);
}
}
}
9条答案
按热度按时间agyaoht71#
最简单的方法是将
toArray(IntFunction<A[]> generator)
方法与数组构造函数引用一起使用,这在该方法的API文档中有建议。它所做的是找到一个接受整数(大小)作为参数的方法,并返回一个
String[]
,这正是new String[]
(的重载之一)所做的。您也可以编写自己的
IntFunction
:IntFunction<A[]> generator
的用途是将整数(数组的大小)转换为新数组。示例代码:
图纸:
uidvcgyl2#
如果你想从一个
Stream<Integer>
中得到一个整数数组,取值范围从1到10,那么IntStream
就在你的控制之下。这里我们用
Stream.of
方法创建一个Stream
,用mapToInt
将Stream<Integer>
转换为IntStream
,然后调用IntStream
的toArray
方法。以下是相同的情况,不使用
Stream<Integer>
,只使用IntStream
:1cklez4t3#
您可以使用以下简单的代码块将Java 8流转换为数组:
但让我们来解释更多的事情,首先,让我们创建一个字符串列表填充三个值:
从给定的数组创建流:
我们现在可以对该流执行一些操作Ex:
最后使用以下方法将其转换为java 8 Array:
1-经典方法(功能接口)
2 -λ表达式
3-方法参考
方法参考说明:
这是写lambda表达式的另一种方法,它与另一种严格等价。
qvtsj1bj4#
将文本转换为字符串数组,其中每个值用逗号分隔,并修剪每个字段,例如:
7xzttuei5#
在线试用:https://repl.it/@SmaMa/Stream-to-array
bxfogqkk6#
可以创建将流转换为数组自定义收集器。
并且使用迅速
xdnvmnnf7#
使用
toArray(IntFunction<A[]> generator)
方法确实是一种非常优雅和安全的方法,可以将Stream转换(或者更准确地说,收集)为与Stream相同类型的数组。但是,如果返回的数组类型不重要,那么简单地使用
toArray()
方法会更容易 * 和 * 更短。vs3odd8k8#
9rbhqvlz9#