当前位置: 首页 > 知识库问答 >
问题:

如何用java-streams将多个列表收集到一个列表?[副本]

郭凯
2023-03-14

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

List<MyListService> services;

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


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

因为我对接口有完全的控制权:还是应该更改方法以返回数组而不是列表?

共有1个答案

韩楷
2023-03-14

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

List<MyObject> list = services.stream()
                              .flatMap(s -> s.getObjects().stream())
                              .collect(Collectors.toList());
 类似资料:
  • 我有一个类,有多个成员。 还有一个类,只有两个属性: 我需要遍历类中的各种列表,并创建类对象,并添加到这样的列表中: 这里重复了if和for循环。 如何使用Java流实现这一点? 注意:类,和之间没有关系,也没有公共接口。

  • 我对Java8相当陌生。我需要将POJO列表按一定标准转换为group,并在UI上显示。 > 将属于儿童类别的对象列表转换为人员类别。 返回列表。 ...主要代码... 上面的FOR-LOOP不能被Java8 Streams替换吗?

  • 给定需要排序和分组的对象列表: 我想将列表分组为列表中的列表,按widgetCode分组,每个子列表的元素按照它们在原始列表中遇到的顺序排列。我知道可以使用收集器将它们分组到列表映射中: 我并不认为键是理所当然地排序的,所以我采取了额外的步骤,将整个内容加载到SortedMap类型中: 我知道我可以通过使用.values()从sortedWidgetMap获取集合,而且我猜它是一个有序集合,因为它

  • 我有一个包含多列的数据框架: 我现在想将组合成一列。但是,我不知道列列表会有多大,否则我可以使用UDF3来组合这三个。 所以期望的结果是: 我怎样才能实现这一点? 不工作的伪代码: 最坏的解决方法是对输入列的数量执行switch语句,然后为每个输入列编写一个UDF,即2-20个输入列,如果提供了更多的输入列,则抛出一个错误。

  • 问题内容: [‘a’,’a’,’b’,’c’,’c’,’c’] 至 和 问题答案: x=[‘a’,’a’,’b’,’c’,’c’,’c’] >>> map(x.count,x) [2, 2, 1, 3, 3, 3] >>> dict(zip(x,map(x.count,x))) {‘a’: 2, ‘c’: 3, ‘b’: 1} >>>