Java 如何计算嵌套列表的项目数?
如何使用流API计算嵌套列表的项 想象3个嵌套列表:Java 如何计算嵌套列表的项目数?,java,java-8,java-stream,Java,Java 8,Java Stream,如何使用流API计算嵌套列表的项 想象3个嵌套列表: List<OuterList> outerLists; class OuterList { List<Sublist> subLists; } class Sublist { List<String> items; } 您可以使用flatMap将流转换为流,然后转换为所有最内层列表中所有字符串的流: outerLists.stream() .flatMap(ol -
List<OuterList> outerLists;
class OuterList {
List<Sublist> subLists;
}
class Sublist {
List<String> items;
}
您可以使用
flatMap
将流
转换为流
,然后转换为所有最内层列表中所有字符串的流
:
outerLists.stream()
.flatMap(ol -> ol.subLists().stream())
.flatMap(s->s.items.stream()).count();
但是,如果存在重复项,它们将被计数多次。您可以使用:
这将比平面映射整个子列表更有效,因为在这里,我们只是将每个子列表映射到其项的大小。这里的想法是将流
平面映射到IntStream
,其中每个外部被替换为一个由其所有内部列表大小组成的流。然后,我们将这些值相加。无论您想对流执行什么操作,forEach
在99%的情况下都不是适合作业的工具。
outerLists.stream()
.flatMap(ol -> ol.subLists().stream())
.flatMap(s->s.items.stream()).count();
outerLists.stream()
.flatMapToInt(outer ->
outer.subLists.stream().mapToInt(sub -> sub.items.size())
)
.sum();