鉴于以下实体:
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
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()方法,它会显示编译时错误。是否有任何方法可以动态地完成它。 这是我使用的代码: