场景:查询回一个List<Map<String,Object>>集合,想在符合条件的map对象加一个字段(put一个属性)作为标识符
复制代码
1
2
3if(dateToString1.equals(dis.get("DRUGDATE"))){ dis.put("oneDay", 1); //此处为符合条件加入的标识符 }
结果,List集合中的所有当前map都被处理了,各种new对象,都未解决;
问题原因是:指向问题:修改对象指向的是一个对象地址
解决办法:循环list时,将对象每次都克隆一次,putAll();
复制代码
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19for(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);
这个问题太容易忽略,耽误了一下午,特此记录。
最后
以上就是曾经寒风最近收集整理的关于map赋值错误,指向问题解决的全部内容,更多相关map赋值错误内容请搜索靠谱客的其他文章。
本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
发表评论 取消回复