我正在阅读Ricahrd Warburton的Java 8书,他提供了以下练习:
尝试使用方法引用重写以下内容:
[...]
flatMap 连接列表的方法
我真的不明白如何在这里申请flatMap
。令我困惑的是,平面地图用于将Stream
的每个元素映射到另一个Stream
,然后将它们连接在一起以生成更大的Stream
,但在这里我们必须分开{ {1}}。
List<T>
有什么想法吗?
答案 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());
}