当Iam使用Arrays.stream和Stream.of时,为什么iam会得到不同的值?理想情况下,两者都应该返回相同的值
i/p:
int num[]= {1,2,3,4};
System.out.println(Arrays.stream(num).count());o/p:
4i/p:
int num[]= {1,2,3,4};
System.out.println(Stream.of(num).count());o/p:
1发布于 2021-09-25 07:57:42
请看一下Arrays.stream和Stream.of的代码以了解更多信息:
public static IntStream stream(int[] array) {
return stream(array, 0, array.length);
}其中一个签名中的Arrays.stream获取一个int[],并将此数组中的值拆分为4。
但
public static<T> Stream<T> of(T t) {
return StreamSupport.stream(new Streams.StreamBuilderImpl<>(t), false);
}获取一个类型为T的对象,因为int[]被认为是一个整体,因此,例如,如果您使用:
Stream.of(new int[]{1, 2, 3}, new int[]{4, 5}).count()你会得到2。
要获得与Arrays.stream相同的结果,可以在of(..)之后使用flatMapToInt
Stream.of(num2).flatMapToInt(Arrays::stream).count()https://stackoverflow.com/questions/69324130
复制相似问题