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

时间:2017-01-03 13:18:54

标签: 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();
};

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

问候, JG。

1 个答案:

答案 0 :(得分:5)

您可以改为使用flatMap

supStream -> supStream.flatMap(supp -> supp.get().stream());
  

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