流收集后继续映射

Rai*_*ipe 6 java java-8 java-stream

收集后如何继续流映射:

public Bus createBus(List<String> passengers) {
   return passengers.stream()
             .map(name -> new Person(name))
             .collect(Collectors.toList())
             .map(personList -> new Bus(personList))
}
Run Code Online (Sandbox Code Playgroud)

以上显然行不通。如何在不使用方法体中的任何变量的情况下使其优雅地工作?

编辑:构造函数是总线(列出人员)。

Mat*_*bin 9

您可以使用 Collectors.collectingAndThen 中的Collector执行额外的整理转换:

public Bus createBus(List<String> passengers) {
    return passengers.stream()
            .map(name -> new Person(name))
            .collect(Collectors
                    .collectingAndThen(Collectors.toList(), Bus::new));
}
Run Code Online (Sandbox Code Playgroud)