简化地图上的嵌套循环
Simplify nested loop over map
我确定我不需要嵌套的内部循环,但是如何通过一个循环来实现,任何循环都可以,只是想摆脱嵌套循环。
for (List<GoogleUsageMapping> recordsMap : recordsGroupByMetadataId.values()) {
for (GoogleUsageMapping record : recordsMap) {
System.out.println(record.getUsage());
}
}
没有办法摆脱它。
但是您当然可以隐藏它。尽管如此,它仍然是一个变相的嵌套循环。示例:
recordsGroupByMetadataId.values()
.stream()
.flatMap(List::stream)
.map(GoogleUsageMapping::getUsage)
.forEach(System.out::println);
Stream::flatMap
(documentation) 将多个流合并为一个大流,这就是将嵌套循环扁平化为一个大循环的原因。
我确定我不需要嵌套的内部循环,但是如何通过一个循环来实现,任何循环都可以,只是想摆脱嵌套循环。
for (List<GoogleUsageMapping> recordsMap : recordsGroupByMetadataId.values()) {
for (GoogleUsageMapping record : recordsMap) {
System.out.println(record.getUsage());
}
}
没有办法摆脱它。
但是您当然可以隐藏它。尽管如此,它仍然是一个变相的嵌套循环。示例:
recordsGroupByMetadataId.values()
.stream()
.flatMap(List::stream)
.map(GoogleUsageMapping::getUsage)
.forEach(System.out::println);
Stream::flatMap
(documentation) 将多个流合并为一个大流,这就是将嵌套循环扁平化为一个大循环的原因。