java 将list 进行深拷贝

浅拷贝:举个例子,我有一个集合list,里面放着map,我需要复制一个一模一样的集合,来进行修改里面的值,不动原始集合,因为原始集合,我后面逻辑会用到,一般情况下,直接将它赋值给另一个空集合,或者通过for循环将里面的map循环add一个空集合里面。程序正常执行,看不出来有什么毛病。当我们操作这个通过for循环的来的集合时,如果进行修改或者删除,原始集合也会跟着改动。意思时是说,我们新集合add进去的是原始集合的map地址。并不是一个全新的没有任何关联的对象。所以当我们改动一个新集合时,旧集合也会随着改动。
深拷贝:深拷贝就是解决浅拷贝带来的问题。创建一个全新的集合。

/**
*将list对象进行深拷贝
* @param list 
* * @return
* */
private List<Map<String,Object>> deepCopyList(List<Map<String,Object>> list) {
	 List<Map<String, Object>> rList =new ArrayList<>();
	 for (Map<String, Object> maps : list) {
	 	Map<String, Object> map = new HashMap<String, Object>();
	 	Set entries = maps.entrySet();
	 	Iterator iterator = entries.iterator();
	 	while(iterator.hasNext()){
	 		Map.Entry entry = (Entry) iterator.next();
	 		map.put((String) entry.getkey(), entry.getValue ());
	 }
	  rList. add(map);
}
 return rList;
 } 
  • 1
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值