首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >Arrays.Stream vs Stream.of

Arrays.Stream vs Stream.of
EN

Stack Overflow用户
提问于 2021-09-25 07:44:14
回答 1查看 60关注 0票数 1

当Iam使用Arrays.stream和Stream.of时,为什么iam会得到不同的值?理想情况下,两者都应该返回相同的值

i/p:

代码语言:javascript
运行
复制
int num[]= {1,2,3,4};
System.out.println(Arrays.stream(num).count());

o/p:

代码语言:javascript
运行
复制
4

i/p:

代码语言:javascript
运行
复制
int num[]= {1,2,3,4};
System.out.println(Stream.of(num).count());

o/p:

代码语言:javascript
运行
复制
1
EN

回答 1

Stack Overflow用户

发布于 2021-09-25 07:57:42

请看一下Arrays.streamStream.of的代码以了解更多信息:

代码语言:javascript
运行
复制
public static IntStream stream(int[] array) {
    return stream(array, 0, array.length);
}

其中一个签名中的Arrays.stream获取一个int[],并将此数组中的值拆分为4。

代码语言:javascript
运行
复制
public static<T> Stream<T> of(T t) {
    return StreamSupport.stream(new Streams.StreamBuilderImpl<>(t), false);
}

获取一个类型为T的对象,因为int[]被认为是一个整体,因此,例如,如果您使用:

代码语言:javascript
运行
复制
Stream.of(new int[]{1, 2, 3}, new int[]{4, 5}).count()

你会得到2。

要获得与Arrays.stream相同的结果,可以在of(..)之后使用flatMapToInt

代码语言:javascript
运行
复制
Stream.of(num2).flatMapToInt(Arrays::stream).count()
票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/69324130

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档