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

2022-08-31 04:00:56

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


答案 1

最简单的方法是将该方法与数组构造函数引用一起使用。该方法的 API 文档中建议了这一点toArray(IntFunction<A[]> generator)

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

它的作用是找到一个方法,该方法将整数(size)作为参数,并返回一个,这正是(重载之一)所做的。String[]new String[]

你也可以写你自己的:IntFunction

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

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

示例代码:

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

答案 2

如果你想从 a 中获取一个值从 1 到 10 的 int 数组,你可以随意使用。Stream<Integer>IntStream

在这里,我们创建一个 with a 方法,并使用 .然后我们可以调用 的方法。StreamStream.ofStream<Integer>IntStreammapToIntIntStreamtoArray

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

这是同样的事情,没有 ,只使用 :Stream<Integer>IntStream

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