我是靠谱客的博主 曾经寒风,这篇文章主要介绍map赋值错误,指向问题解决,现在分享给大家,希望可以做个参考。

场景:查询回一个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);

这个问题太容易忽略,耽误了一下午,特此记录。

最后

以上就是曾经寒风最近收集整理的关于map赋值错误,指向问题解决的全部内容,更多相关map赋值错误内容请搜索靠谱客的其他文章。

本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
点赞(112)

评论列表共有 0 条评论

立即
投稿
返回
顶部