明明已经用了new Hash,改变map的值后,原map的值还是发生了改变
public Map<String, Object> materialApproachWeekInfo(String constructionId) {
List<String> dateList=materialApproachMapper.getNearDays();
Map<String,Object> map=new HashMap<>();
Map<String,Double> mapvalue=new HashMap<>();
for (String date : dateList){
List<String> namelist=materialApproachMapper.materialApproachNameByDate(constructionId,date);
for(String name : namelist){
mapvalue.clear();
Double value = materialApproachMapper.materialApproachInfoByDate(constructionId, date, name);
mapvalue.put(name,value);
}
map.put(date,mapvalue);
}
return map;
}
导致最后map上所有key的值都一样了
在遍历时和存储前,打印一下date的值,看下值是否一致。
for (String date : dateList){
//输出date
List<String> namelist=materialApproachMapper.materialApproachNameByDate(constructionId,date);
for(String name : namelist){
mapvalue.clear();
Double value = materialApproachMapper.materialApproachInfoByDate(constructionId, date, name);
mapvalue.put(name,value);
}
//输出data
map.put(date,mapvalue);
已解决 , 再new一遍即可
public Map<String,Object> materialApproachWeekInfo(String constructionId) {
List<String> dateList=materialApproachMapper.getNearDays();
List<String> names=materialApproachMapper.materialApproachNameBy(constructionId);
List<Double> valueList=new ArrayList<>();
Map<String,Object> mapOne=new HashMap<>();
List<Object> returnList=new ArrayList<>();
Map<String,Object> returnMap=new HashMap<>();
for(String name : names){
mapOne=new HashMap<>();
valueList=new ArrayList<>();
for(String date : dateList){
Double value = materialApproachMapper.materialApproachInfoByDate(constructionId, date, name);
if(value==null){
value=0.0;
}
valueList.add(value);
}
mapOne.put("name",name);
mapOne.put("value",valueList);
// mapOne.put("days",dateList);
returnList.add(mapOne);
}
returnMap.put("list",returnList);
returnMap.put("date",dateList);
return returnMap;
}