【问题标题】:How to collect multiple lists to one list with java-streams? [duplicate]如何使用 java-streams 将多个列表收集到一个列表中? [复制]
【发布时间】:2016-06-06 07:54:22
【问题描述】:

如何使用java-streams 将多个List 值收集到一个列表中?

List<MyListService> services;

services.stream().XXX.collect(Collectors.toList());


interface MyListService {
   List<MyObject> getObjects();
}

由于我可以完全控制界面:还是应该更改方法以返回 Array 而不是 List?

【问题讨论】:

  • 这取决于MyListService 是什么以及如何从它的实例中获取 List[s]。
  • MyListService 到底是什么?你能分享它的公共方法吗?结果应该如何?
  • 服务可能包含返回对象列表的任何方法

标签: java java-stream


【解决方案1】:

您可以使用flatMap 收集MyListService 实例中包含的列表:

List<MyObject> list = services.stream()
                              .flatMap(s -> s.getObjects().stream())
                              .collect(Collectors.toList());

【讨论】:

  • 如果是首选方式,那就太好了。
  • @membersound 这就是flatMap 的存在。
  • 天哪,感谢这使我免于创建额外的列表并使用 For Each 将它们全部 1 个 1 移动
猜你喜欢
  • 1970-01-01
  • 2023-03-27
  • 1970-01-01
  • 2012-06-06
  • 1970-01-01
  • 2017-06-21
  • 1970-01-01
  • 1970-01-01
  • 2016-02-28
相关资源
最近更新 更多