Java8中Map和mapToObj的区别?

Java8中引入了三个原始类型特化流,分别是IntStream、DoubleStream和LongStream。map方法只能为流中的每个元素返回另一个int,mapToObj这个方法返回一个对象值流。如果需要得到类似int数组的话就需要使用mapToObj。
IntStream.rangeClosed(1, 100).boxed()
.flatMap(a ->
IntStream.rangeClosed(a, 100)
.filter(b -> Math.sqrt(a * a + b * b) % 1 == 0)
.mapToObj(b -> new int[]{a, b, (int) Math.sqrt(a * a + b * b)})
);
例子中想得到的是int[],使用map的话就会报错—Bad return type in lambda expression: int[] cannot be converted to int

你可能感兴趣的:(java,stream)