【发布时间】:2018-10-04 07:46:22
【问题描述】:
我有一张LocalDate 和带有每日数据的整数的地图。现在我想用每周数据创建一个新地图,这意味着当我们将先前条目和当前条目下的整数相加时,新地图将包含累积计数。我陷入了困境。谁能帮我设计一个算法。我是 Java Stream api 的新手,如果可以使用 Stream API,它将
示例数据:
在图像中,我尝试遍历weeklyMap,然后在其中遍历dailyMap。但我不确定如何在代码(Java)中实现它。
编辑
代码sn-p:
Map.Entry<LocalDate, Integer> prevEntry = null;
boolean firstTime = true;
for (Map.Entry<LocalDate, Integer> currEntry : weeklyMap.entrySet()) {
if (firstTime) {
prevEntry = currEntry;
firstTime = false;
if (weeklyMap.containsKey(currEntry.getKey())) {
weeklyMap.put(currEntry.getKey(), currEntry.getValue());
}
} else {
for (Map.Entry<LocalDate, Integer> todayEntry : dailyMap.entrySet()) {
if (prevEntry.getKey().equals(todayEntry.getKey())) {
prevEntry.setValue(todayEntry.getValue());
} else if(todayEntry.getKey().isAfter(prevEntry.getKey()) && todayEntry.getKey().isBefore(currEntry.getKey())) {
currEntry.setValue(currEntry.getValue() + todayEntry.getValue());
}
}
}
}
【问题讨论】:
-
边缘案例:一个月内有 31 天(> 4 周)会发生什么?是否有部分第 5 周,还是第 5 周结转到下月初?
-
@TimBiegeleisen 我不明白为什么要花几个月的时间?
-
@TimBiegeleisen 感谢您的评论,但我希望添加dailyMap 中的整数,这些整数属于weeklyMap 的日期
-
所以你是说你当前的地图有几个星期的键,对吗?我从您的示例数据中得到了不同的印象。也许你应该包含代码。
-
你真的应该包含你的代码;它会帮助你的问题。
标签: java algorithm java-stream treemap