在this问题已经回答了两个表达式是相等的,但在这种情况下它们会产生不同的结果。对于给定的 int[] 分数
,为什么会这样:
Arrays.stream(scores)
.forEach(System.out::println);
...但这不是:
Arrays.asList(scores).stream()
.forEach(System.out::println);
据我所知,.stream()
可以在任何集合上调用,列表肯定是。第二个代码片段只返回一个包含整个数组而不是元素的流。
最佳答案
您看到的行为并非特定于 Stream
秒。
Arrays.asList(scores)
返回 List<int[]>
当你传递给它一个 int[]
,因为泛型类型参数不能被原始类型替换。因此,当您调用 asList(T... a)
, 编译器使用 int[]
代替 T
.
如果你改变scores
至 Integer[]
,您将获得预期的输出(即 Arrays.asList(scores)
将返回 List<Integer>
)。
关于java - Arrays.stream(array) 与 Arrays.asList(array).stream(),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37252468/