Java Stream API - 如何减少循环以减少

Lut*_*ław 0 java lambda java-stream

我有以下声明:

Function<Stream<Supplier<Collection<? extends User>>>, Stream<User>> userStreamSupplier =
   supStream -> {
    ArrayList<User> list = new ArrayList<>();
    supStream.forEach(sup -> list.addAll(sup.get()));
    return list.stream();
};
Run Code Online (Sandbox Code Playgroud)

是否可以将内部lambda中的循环转换为智能stream.reduce操作(或其他聚合)?我试过各种方法,但我失败了.

问候,JG.

Jor*_*nee 5

你可以flatMap改用:

supStream -> supStream.flatMap(supp -> supp.get().stream());
Run Code Online (Sandbox Code Playgroud)

返回一个流,该流包含将此流的每个元素替换为通过将提供的映射函数应用于每个元素而生成的映射流的内容的结果.