背景
结合上篇文章,需要将数据库系统表中所有存在的table都统计成一个list,并且最后以系统表中的table去做统计记录数
- 查询系统表,得到表的信息列表 existSchemaList
- 连表查询的某个部门所有的表信息 concatSchemaList
- 使用
existSchemaList.retainAll (concatSchemaList)
取两者的交集
以上步骤有个问题是retainAll并不是返回交集,而是直接将existSchemaList清理成交集
由于不止一个部门,所以每一次求交集都会影响系统表信息列表,所有需要每个部门处理的时候都需要做一次查询系统表
为此我把查询系统表放在循环部门外边,然后通过复制的方式,创建一个新的系统表信息列表
ArrayList<String> result = existSchemaList
bug
但是这样我发现到第二个部门的时候,原部门信息列表还是发生了变化,发现这种方式复制的只是地址,可以看到地址都是 ArrayList@28817
解决方案
使用 addAll
ArrayList<String> result = new ArrayList<>();
result.addAll(existSchemaList);