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

22 浏览
0 Comments

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

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

admin 更改状态以发布 2023年5月22日
0
0 Comments

\n\n如果你想要从一个Stream得到值为1到10的int数组,那么你可以使用IntStream
\n这里我们使用Stream.of方法创建了一个Stream,并使用mapToIntStream转换成IntStream。然后我们可以调用IntStreamtoArray方法。
\n

Stream stream = Stream.of(1,2,3,4,5,6,7,8,9,10);
//or use this to create our stream 
//Stream stream = IntStream.rangeClosed(1, 10).boxed();
int[] array =  stream.mapToInt(x -> x).toArray();

\n同样的事情可以使用仅有IntStream的方式完成,而不需要Stream
\n

int[]array2 =  IntStream.rangeClosed(1, 10).toArray();

0
0 Comments

最简单的方法是使用toArray(IntFunction generator)方法和数组构造函数引用。这在方法的API文档中被建议。

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

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

您也可以编写自己的IntFunction:

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

IntFunction generator的目的是将一个整数(数组大小)转换为新数组。

示例代码:

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

输出:

a
b
c

0