Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/363.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 为什么stream()不能在刚声明的数组中工作_Java_Arrays_Java Stream - Fatal编程技术网

Java 为什么stream()不能在刚声明的数组中工作

Java 为什么stream()不能在刚声明的数组中工作,java,arrays,java-stream,Java,Arrays,Java Stream,这可能很简单,但我找不到为什么在使用Arrays.asList创建列表后不能直接启动流的答案。”“列表”可以正常工作,但“列表2”不行,IntelliJ没有提供帮助 List<Book> list = Arrays.asList(lalka,dziady,chlopi,jutrzenka); list.stream() .map((Book var)-> var.getAuthor().getName()) .forE

这可能很简单,但我找不到为什么在使用Arrays.asList创建列表后不能直接启动流的答案。”“列表”可以正常工作,但“列表2”不行,IntelliJ没有提供帮助

 List<Book> list = Arrays.asList(lalka,dziady,chlopi,jutrzenka);

    list.stream()
            .map((Book var)-> var.getAuthor().getName())
            .forEach(var-> System.out.println(var));

    List<Book> list2 = Arrays.asList(lalka, dziady).stream()
            .map((Book var) -> var.getAuthor().getName())
            .forEach(var-> System.out.println(var));

流管道不返回任何内容。终端操作forEach的返回类型为void,因此无法将其分配给列表变量

你可以写:

Arrays.asList(lalka, dziady)
      .stream()
      .map((Book var) -> var.getAuthor().getName())
      .forEach(var-> System.out.println(var));

您正在尝试将.forEach的结果分配给List list2变量。 .forEach。。。属于void类型。
删除此不必要的分配。

问题在于列表2的分配。 您可能会遇到无法将void转换为list的错误 as.forEach不返回任何内容


删除对list2的赋值,这将编译并运行得很好

这不是一个错误。会发生什么?您会遇到什么样的错误?您正在尝试将forEach的结果分配给一个变量。但是forEach不会返回任何东西。文档或规范的哪一部分让您认为forEach应该返回列表?仅供参考:Arrays.asListlalka,dziady.stream最好写成stream.oflaka,dziady