在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)
以上是代码。我将迭代日期值。
内部地图值已更新为新值,或已被覆盖。但是对于每个日期我都希望内部地图保存实际的日期值。
我是否必须在每天迭代后删除内部地图,或者还有其他方法吗?
答案 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)
}