使用带有列表列表的平面地图
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 更简洁易读。
如果我有 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 更简洁易读。