List集合复制地址的bug

背景

结合上篇文章,需要将数据库系统表中所有存在的table都统计成一个list,并且最后以系统表中的table去做统计记录数

  1. 查询系统表,得到表的信息列表 existSchemaList
  2. 连表查询的某个部门所有的表信息 concatSchemaList
  3. 使用existSchemaList.retainAll (concatSchemaList)取两者的交集

以上步骤有个问题是retainAll并不是返回交集,而是直接将existSchemaList清理成交集
由于不止一个部门,所以每一次求交集都会影响系统表信息列表,所有需要每个部门处理的时候都需要做一次查询系统表

为此我把查询系统表放在循环部门外边,然后通过复制的方式,创建一个新的系统表信息列表

ArrayList<String> result = existSchemaList

bug

但是这样我发现到第二个部门的时候,原部门信息列表还是发生了变化,发现这种方式复制的只是地址,可以看到地址都是 ArrayList@28817
在这里插入图片描述

解决方案

使用 addAll

ArrayList<String> result = new ArrayList<>();
result.addAll(existSchemaList);
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值