使用flatMap连接列表

时间:2016-05-23 13:34:35

标签: java java-8 java-stream

我正在阅读Ricahrd Warburton的Java 8书,他提供了以下练习:

  

尝试使用方法引用重写以下内容:

     

[...]

     

flatMap   连接列表的方法

我真的不明白如何在这里申请flatMap。令我困惑的是,平面地图用于将Stream的每个元素映射到另一个Stream,然后将它们连接在一起以生成更大的Stream,但在这里我们必须分开{ {1}}。

List<T>

有什么想法吗?

1 个答案:

答案 0 :(得分:5)

出于练习的目的,我们的想法是使用Stream.of(...)创建包含两个给定列表的Stream<List<T>>,并使用方法参考List::stream对每个列表进行展平。这会将Stream<List<T>>展平为Stream<T>。然后,您可以使用Collectors.toList()

将所有元素收集到列表中
public static <T> List<T> concat(List<T> lst1, List<T> lst2){
    return Stream.of(lst1, lst2).flatMap(List::stream).collect(Collectors.toList());
}