开发者社区> 问答> 正文

如何从数组创建流?

目前,每当我需要从数组创建流时,我都会

String[] array = {"x1", "x2"}; Arrays.asList(array).stream(); 有一些直接的方法可以从数组创建流吗?

问题来源于stack overflow

展开
收起
保持可爱mmm 2020-02-07 01:27:34 424 0
1 条回答
写回答
取消 提交回答
  • 您可以使用Arrays.stream Eg

    Arrays.stream(array); 您也可以Stream.of按@fge所述使用,看起来像

    public static Stream of(T... values) { return Arrays.stream(values); } 但是note Stream.of(intArray)将返回,Stream<int[]>而Arrays.stream(intArr)如果IntStream您传递type数组,则将返回int[]。因此,简而言之,您可以观察两种方法之间的区别,例如

    int[] arr = {1, 2}; Stream<int[]> arr1 = Stream.of(arr);

    IntStream stream2 = Arrays.stream(arr); 将原始数组传递给时Arrays.stream,将调用以下代码

    public static IntStream stream(int[] array) { return stream(array, 0, array.length); } 当您将原始数组传递给Stream.of以下代码时,将被调用

    public static Stream of(T t) { return StreamSupport.stream(new Streams.StreamBuilderImpl<>(t), false); } 因此,您得到不同的结果。

    更新:如Stuart Marks的评论所述,的子范围重载Arrays.stream比使用更可取,Stream.of(array).skip(n).limit(m)因为前者会导致SIZED流,而后者则不会。原因是limit(m)不知道大小是m还是小于m,而Arrays.stream范围检查并知道流的确切大小您可以阅读Arrays.stream(array,start,end) here返回的流实现的源代码,而Stream.of(array).skip().limit()is 读取的流实现的源代码在这种方法内。

    2020-02-07 01:27:49
    赞同 展开评论 打赏
问答地址:
问答排行榜
最热
最新

相关电子书

更多
低代码开发师(初级)实战教程 立即下载
冬季实战营第三期:MySQL数据库进阶实战 立即下载
阿里巴巴DevOps 最佳实践手册 立即下载