Java 内部Hashmap值被新值覆盖

Java 内部Hashmap值被新值覆盖,java,hashmap,Java,Hashmap,在Java中,我希望我的哈希映射具有如下结构 {12/10/2015 = {8977867 = 4 }} {13/10/2015 = {8977867 = 3 }} 目前我的散列图是 {12/10/2015 = {8977867 = 3 }} {13/10/2015 = {8977867 = 3 }} Map<String, Object>trial=new HashMap<String,Object>(); HashMap<Date, Map<Strin

在Java中,我希望我的哈希映射具有如下结构

{12/10/2015 = {8977867 = 4 }}
{13/10/2015 = {8977867 = 3 }}
目前我的散列图是

{12/10/2015 = {8977867 = 3 }}
{13/10/2015 = {8977867 = 3 }}

Map<String, Object>trial=new HashMap<String,Object>();
HashMap<Date, Map<String, Object>> map1 = new HashMap<>();
String cuurentDate;

for(event = some condition) {
    String key = event.getKey;
    Integer value= event.getValue;
    trial.put(key,value)
}
map1.put(currentDate,trial)
以上是代码。我将遍历日期值

内部贴图值将更新为新值,或被覆盖。但是对于每个日期,我希望内部映射保存实际的日期值


我是否必须在每天迭代一次后删除内部映射,或者是否有其他方法来执行此操作?

问题可能出在您未包含的代码中。每次在map1映射中放置内部HashMap实例时,都应该创建一个新的HashMap,而不是重用以前的HashMap

HashMap<Date, Map<String, Object>> map1 = new HashMap<>();    

Map<String, Object> trial=new HashMap<String,Object>();
String currentDate = ...;
for(...){
    ...
    trial.put(key,value);
}
map1.put(currentDate,trial);

trial=new HashMap<String,Object>(); // the important thing you are probably missing
currentDate = ...;
for(...){
    ...
    trial.put(key,value);
}
map1.put(currentDate,trial);
您必须在for循环中定义trial,更改trial的值后,立即将其放入map1


您应该在问题中发布您的代码。@Eran我已经更新了我的问题!!非常感谢。
HashMap<Date, Map<String, Object>> map1 = new HashMap<>();
String cuurentDate;
for(event = some condition){
    Map<String, Object>trial=new HashMap<String,Object>();
    String key = event.getKey;
    Integer value= event.getValue;
    trial.put(key,value)
    map1.put(currentDate,trial)
}