【发布时间】:2020-03-05 16:01:56
【问题描述】:
我有一个包含日期作为键的映射和(另一个字符串映射作为键和列表作为值)作为值。 Map<LocalDate, Map<String, List<FlexiServer>>>,我想填充另一个以 String 为键并以 double 为值的映射。 FlexiServer的内容是
public class FlexiServer {
private String serverNumber;
private Double quantity;
private Integer level;
private String parentServer;
}
所以,基本上我想从首先迭代外部地图以获取内部地图,然后迭代内部地图以获取 FlexiServer 列表并填充具有服务器编号作为键和数量列表作为值的新地图。如何使用 java 8 流来做到这一点?
我尝试使用 for 循环,但我想使用 Java 流替换它。
if(data.isPresent()) {
for(Map.Entry<LocalDate, Map<String, List<FlexiServer>>> entry : data.get().entrySet()) {
for(Map.Entry<String, List<FlexiServer>> innerEntry : entry.getValue().entrySet()) {
for(FlexiServer dto : innerEntry.getValue()) {
dailyRequirements.computeIfAbsent(dto.getserverNumber(),
k -> new ArrayList<>()).add(dto.getQuantity());
}
}
}
}
【问题讨论】:
-
那么,到目前为止,您尝试了什么?
-
我尝试使用 for 循环来实现,但后来嵌套了 3 个循环,所以我发现它不是一个好方法。
标签: java java-8 java-stream