Java Stream 集(collect)转换为数组
时间:2020-02-23 14:35:11 来源:igfitidea点击:
在本教程中,我们将看到如何将任何Java 8流 collect 转换为数组。
有很多方法可以做到,但我会表现出最简单的方式。
我们可以简单地使用ToArray(Intfunction <A []>生成器)。
这个生成器函数将尺寸视为输入,并创建该大小的新数组。
将Steam转换为阵列
让我们在简单的例子的帮助下了解。
package org.igi.theitroad.flatMap; import java.util.Arrays; import java.util.List; import java.util.stream.Stream; public class StreamCollectToArrayMain { public static void main(String args[]) { List<String> listOfCountries=Arrays.asList("Netherlands","China","Nepal","Bhutan"); Stream<String> streamCountries=listOfCountries.stream(); String[] countriesArr=streamCountries .toArray(size -> new String[size]); for (String country:countriesArr) { System.out.println(country); } } }
建议简单地使用阵列构造函数参考,如下所示。
修改15-16行
String[] countriesArr=streamCountries .toArray(String[]::new);
将流收集转换为整数数组
如果要转换为Integer数组,则可以使用IntStrem来执行此操作。
我们可以在IntStream上调用ToArray(),它将简单地将其转换为int []。
我们无需在此方案中传递任何参数。
package org.igi.theitroad.flatMap; import java.util.Arrays; import java.util.List; import java.util.stream.Stream; public class StreamCollectToIntArrayMain { public static void main(String args[]) { List<Integer> listOfIntgers=Arrays.asList(12,3,45,65,12,1,78); Stream<Integer> streamIntegers=listOfIntgers.stream(); int[] intArr=streamIntegers.mapToInt(x->x) //Convert Stream to IntStream .toArray(); //you can directly call toArray for (int e:intArr) { System.out.println(e); } } }
12 3 45 65 12 1 78