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

如何将包含列表的对象列表扁平化,并将每个元素传递到方法中?[副本]

索瀚海
2023-03-14

鉴于以下实体:

public class Parent extends {
    private Long id;    
    private List<Child> children = new ArrayList<>();
}
List<Parent> parents = //..

schedules.stream()
        .flatMap(Parent::getChildren)
        .forEach(this::invoke);

这将给出错误:

方法引用中的返回类型错误:无法将java.util.List 转换为java.util.Stream.Stream<?扩展R>

共有1个答案

郏兴贤
2023-03-14

Stream.FlatMap()需要一个函数以返回Stream作为参数。您正在尝试传递一个函数,该函数返回一个列表。请改用以下方式:

List<Parent> parents = ...;
parents.stream()
        .flatMap(p -> p.getChildren().stream())
        .forEach(this::invoke);

或者,您可以使用stream.map()stream.flatmap():

parents.stream()
        .map(Parent::getChildren)
        .flatMap(Collection::stream)
        .forEach(this::invoke);
 类似资料:
  • 问题内容: 我有一个这样的清单: 此列表中的每个项目可能包含一个数据对或一个元组,我想将此列表更改为 然后这样做: 我不知道如何更改列表结构,或者如何基于原始列表进行相同的计算? 问题答案: 如果您只想整理列表,请使用:http : //docs.python.org/library/itertools.html#itertools.chain.from_iterable

  • 问题内容: 我只想将一个列表中的每个元素除以一个int。 这是错误: 我了解为什么收到此错误。但是我为找不到解决方案感到沮丧。 还尝试了: 错误: 预期结果: 编辑: 以下代码给了我预期的结果: 但是,有没有更容易/更快的方法来做到这一点? 问题答案: 惯用的方式是使用列表理解: 或者,如果您需要保留对原始列表的引用:

  • 我正在使用Jackson 2.4将对象序列化为JSON。 当我序列化对象列表时,如果某些元素为空,则结果字符串包含一些“空”字符串。 如何防止元素被序列化?是否有任何配置?我已经设置了! 下面是我的代码: 连载之后我得到了这个:

  • 问题内容: 我有一个清单: 如何将每个元素乘以5?输出应为: 问题答案: 您可以只使用列表理解: 请注意,列表理解通常是执行循环的更有效方法: 作为替代方案,以下是使用流行的Pandas软件包的解决方案: 或者,如果您只想要列表:

  • 我试图用N深度展平ArrayList。为此,我尝试使用流API的flapMap方法。我能得到它。但是我必须根据列表的数量重复使用flatMap()方法。如果再使用一个flatMap()方法,它会显示编译时错误。是否有任何方法可以动态地完成它。 这是我使用的代码: