Java中一种将日数据映射为周数据的算法
我有一张LocalDate
和整数的地图,上面有每天的数据。现在,我想用每周数据创建一个新的映射,这意味着当我们将前一个条目和当前条目下的整数相加时,新映射将包含累积计数。我被困在这里面了。有人能帮我设计一个算法吗。我不熟悉Java流api,如果使用流api是可行的,它将
示例数据:
在这张图片中,我试着遍历了周地图,然后在里面遍历了每日地图。但我不知道如何在代码(Java)中实现这一点
编辑
代码段:
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());
}
}
}
}
# 1 楼答案
似乎最简单的方法是先建立一张累积金额的每日地图,然后只过滤周一:
编辑:
如果要保留结果映射的顺序,可以修改最后的
collect()
调用:# 2 楼答案
我认为您应该包括验证
currentEntry.key == todayEntry.key
的edge案例,然后对前面的值求和代码可能看起来有点像这样: