java - Arrays.stream(array) 与 Arrays.asList(array).stream()

标签 java arrays foreach java-8 java-stream

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 .

如果你改变scoresInteger[] ,您将获得预期的输出(即 Arrays.asList(scores) 将返回 List<Integer> )。

关于java - Arrays.stream(array) 与 Arrays.asList(array).stream(),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37252468/

相关文章:

java - 使用 String.matches 将 PHP preg_match 逻辑移植到 Java 时不兼容

c - 数组 typedef 结构在被函数调用时无法正常工作

javascript - D3.js实现示例中的匿名函数和数据绑定(bind)机制解释

java - 通用类型数组的可能方法?

c# - 像 ForEach 一样使用 List<T>.RemoveAll 有什么缺点?

java - 在 for 循环中同时迭代映射和数组

java - Spring Boot Starter Web 依赖项给出缺少 Artifact 的错误

针对海量数据集的 Java 贝叶斯推理框架

java - HashMap + 插入顺序

php - 获取数组数组中下一个元素的值