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