【发布时间】:2019-12-01 22:48:01
【问题描述】:
我对 Java 8 不太熟悉(仍在学习中),并希望看看是否可以使用 flatMap 找到与以下代码等效的内容。
我使用 lombok @Builder(你可以忽略那部分)
我们可能需要的一些检查 - 列表可能是空的
我的对象的粗略草图 - 类从头开始{
public static void main(String[] args) {
List<Object2> object2List = new ArrayList<>();
object2List.add(Object2.builder().needThisList(Arrays.asList("good" , "bad")).build());
object2List.add(Object2.builder().needThisList(Arrays.asList("worse" , "awesome")).build());
List<Object2> object2List_2 = new ArrayList<>();
object2List_2.add(Object2.builder().needThisList(Arrays.asList("good1" , "bad1")).build());
object2List_2.add(Object2.builder().needThisList(Arrays.asList("worse1" , "awesome1")).build());
List<Object1> object1List = new ArrayList<>();
object1List.add(Object1.builder().object2List(object2List).build());
object1List.add(Object1.builder().object2List(object2List_2).build());
//Please get me final list of all the Strings
}
}
@Builder
class Object1 {
List<Object2> object2List;
}
@Builder
class Object2 {
List<String> needThisList;
}
【问题讨论】:
-
答案就在问题中。使用平面地图。你试过使用它吗?您面临的具体问题是什么?
-
好吧,我对正确使用它感到困惑:( List
finalList = object1List.stream() .flatMap() .map() .collect(Collectors.toList()); -
我对正确使用它有点困惑。我必须再次在 map 函数中做一个流?
-
List
finalList = object1List.stream() .flatMap(Object1::getObject2List) .flatMap(Object2::getNeedThisList) .collect(Collectors.toList()); -
@Cuga - 你是对的。让我编辑一下。