在所有情况下,都将替换与外部键关联的内部映射。这就消除了之前添加的所有映射。当发现现有映射时,应该更新它们,如果缺少映射,则应该添加它们。
以下是我认为你试图做的事情的天真版本。
LocalDate date = a.startDate.toLocalDate();
String attr = a.getStringAttr();
// If the date is not a key, add it mapping to an empty Map
if (! hashMap.containsKey(date) {
hashMap.put(date, new HashMap<String,Intger>());
}
// If the attr is not an inner key, add it mapping to 0
if (! hashMap.get(date).containsKey(attr)) {
hashMap.get(date).put(attr, 0);
}
// increment
int previous = hashMap.get(date).get(attr);
hashMap.get(date).put(attr, previous + 1);