为什么stream()在刚刚声明的数组中不起作用

时间:2019-07-30 13:11:18

标签: java arrays java-stream

这可能很简单,但是我找不到使用Arrays.asList创建List后无法直接开始流的答案。 'list'工作正常,但'list2'无效,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));

3 个答案:

答案 0 :(得分:1)

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

您可以写:

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

答案 1 :(得分:0)

您正在尝试将.forEach的结果分配给List<Book> list2变量。 .forEach(...)的类型为void。 删除此不必要的任务。

答案 2 :(得分:0)

问题在于分配给列表list2。 您可能会收到错误,无法将void转换为list 因为 .forEach()不返回任何内容。

删除对list2的赋值,即可编译并正常运行。