内部Hashmap值被新值覆盖

时间:2015-10-27 09:47:41

标签: 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<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)

以上是代码。我将迭代日期值。

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

我是否必须在每天迭代后删除内部地图,或者还有其他方法吗?

2 个答案:

答案 0 :(得分:0)

问题很可能出在您未包含的代码中。每次在map1地图中放置内部HashMap实例时,都应该创建一个新的HashMap,而不是重复使用前一个。{/ p>

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);

答案 1 :(得分:-1)

您必须在trial循环中定义for,并在更改trial的值后立即将其设置为map1

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)
}