场景:查询回一个List<Map<String,Object>>集合,想在符合条件的map对象加一个字段(put一个属性)作为标识符
if(dateToString1.equals(dis.get("DRUGDATE"))){
dis.put("oneDay", 1); //此处为符合条件加入的标识符
}
结果,List集合中的所有当前map都被处理了,各种new对象,都未解决;
问题原因是:指向问题:修改对象指向的是一个对象地址
解决办法:循环list时,将对象每次都克隆一次,putAll();
for(int j=0;j<drugOrderList.size();j++){
Map<String,Object> dis = new HashMap<>();
dis.putAll(drugOrderList.get(j)); // 就加这一行代码,解决指向问题
String format = "yyyy-MM-dd";
//当前时间
Date nowTime = new SimpleDateFormat(format).parse(dateToString1);
//开始时间
Date startTime = new SimpleDateFormat(format).parse(dis.get("ORDER_TIME").toString());
//结束时间
Date endTime = new SimpleDateFormat(format).parse(dis.get("STOP_TIME").toString());
if(isEffectiveDate(nowTime,startTime,endTime)){
if(dateToString1.equals(dis.get("DRUGDATE"))){
dis.put("oneDay", 1);
}
day.add(dis);
}
}
returnList.add(day);
这个问题太容易忽略,耽误了一下午,特此记录。