使用带有列表列表的平面地图

Use of flat map with list of list

如果我有 List<List<Foo>> 我可以使用平面地图来展平列表。 但是我有 MyClass 有一个 List<Foo>Foo class 有柱列表 List<Bar> 然后我必须做这样的事情:

myClass.getFoos().stream().map(Foo::getBars).forEach({
    bar -> // some code
});

在这种情况下是否可以使用平面地图,这样我就可以一次从 MyClass 中获取柱列表。

myClass.getFoos()
        .stream() 
        .flatMap(x -> x.getBars().stream())
        .forEach(...)

试试这个:

myClass.getFoos().stream()
    .map(Foo::getBars)
    .flatMap(List::stream) // flatten the lists
    .forEach(...);

请注意方法引用的独占使用,我发现它比 lambda 更简洁易读。