当前位置: 首页 > 知识库问答 >
问题:

如何从数组创建流?

刘明朗
2023-03-14

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

String[] array = {"x1", "x2"};
Arrays.asList(array).stream();

共有1个答案

欧阳俊逸
2023-03-14

您可以使用Arrays.Stream。

Arrays.stream(array);

您还可以使用@FGE提到的stream.of,如下所示

public static<T> Stream<T> of(T... values) {
    return Arrays.stream(values);
}

但是请注意,stream.of(intArray)将返回stream ,而arrays.stream(intArr)将返回intstream,只要您传递的数组类型为int[]。因此,简单地说,对于基元类型,您可以观察到两种方法之间的差异。

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

IntStream stream2 = Arrays.stream(arr); 
public static IntStream stream(int[] array) {
    return stream(array, 0, array.length);
}
 public static<T> Stream<T> of(T t) {
     return StreamSupport.stream(new Streams.StreamBuilderImpl<>(t), false);
 }

因此你会得到不同的结果。

更新:正如Stuart Marks注释所提到的,arrays.stream的subrange重载比使用stream.of(array).skip(n).limit(m)更好,因为前者会产生大小较大的流,而后者不会。原因是limit(m)不知道大小是m还是小于m,而arrays.stream进行范围检查并知道流的确切大小,您可以在此读取由arrays.stream(array,start,end)返回的流实现的源代码,而对于由stream.of(array).skip().limit()返回的流实现的源代码,则在此方法中。

 类似资料:
  • 问题内容: 目前,每当我需要从数组创建流时,我都会 有一些直接的方法可以从数组创建流吗? 问题答案: 您可以使用Arrays.stream Eg 您也可以使用@fge所提到的,它看起来像 但是note 将返回,而如果您传递一个type数组,则将返回。因此,简而言之,您可以观察两种方法之间的区别,例如 将原始数组传递给时,将调用以下代码 当您将原始数组传递给以下代码时,将被调用 因此,您得到不同的结

  • 问题内容: 我正在尝试在Swift中创建一个元组数组,但是遇到很大的困难: 以上导致编译器错误。 怎么会这样 以下内容可以正常工作: 问题答案: 它与类型别名一起使用: 更新: 从Xcode 6 Beta 3开始,数组语法已更改:

  • 问题内容: 我正在尝试在表中插入数组,但需要将列表转换为SQL Array类型。我正在使用该方法,但出现异常。 我需要传递一个类型名称,但是我不知道这是什么,而且我总是会遇到异常。该数组来自VARCHAR。 我该如何解决插入数组? 代码 堆栈跟踪 问题答案: 使用“ varchar”而不是“ VARCHAR”。参见http://grepcode.com/file/repo1.maven.org/m

  • 我有一个字符串数组和一个整数数组。如何使用第一个作为键,第二个作为值来创建地图? 如何在 Kotlin 中将 List 转换为 Map?不能解决这个问题;我有2个数组,想要一个地图。

  • 问题内容: 我正在尝试在Swift中构建Promises的基本实现,并且我需要能够向数组中添加函数,但是我不确定如何使它起作用。 我发现,当我尝试执行以下操作时,Swift Playground不会建议您: 这很有道理-Swift无法推断出-的类型,但这就是我的问题所在。我不确定如何预定义函数数组。 是否可以在Swift中创建函数数组?我想是这样,职能是一等公民。 问题答案: 绝对有可能,只需将数

  • 我有一个这样的文本文件: ids.txt 我想读取这个文件并加载到二维数组中。我希望有一个类似于下面的数组: 如何解决此异常?