如何将列表的列表转换为 Java 8 中的列表?

新手上路,请多包涵

如果我有一个 List<List<Object>> ,我如何通过使用 Java 8 的特性将它变成一个 List<Object> 以相同的迭代顺序包含所有对象?

原文由 Sarah Szabo 发布,翻译遵循 CC BY-SA 4.0 许可协议

阅读 589
2 个回答

您可以使用 flatMap 将内部列表(将它们转换为流后)展平为单个流,然后将结果收集到列表中:

 List<List<Object>> list = ...
List<Object> flat =
    list.stream()
        .flatMap(List::stream)
        .collect(Collectors.toList());

原文由 Eran 发布,翻译遵循 CC BY-SA 3.0 许可协议

flatmap 更好,但还有其他方法可以达到同样的效果

List<List<Object>> listOfList = ... // fill

List<Object> collect =
      listOfList.stream()
                .collect(ArrayList::new, List::addAll, List::addAll);

原文由 Saravana 发布,翻译遵循 CC BY-SA 4.0 许可协议

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题