根据属性求两个集合的交集 A∩B 注意是 contains 对A进行过滤,留下与B属性相同的元素(B映射出的list包含A属性)的元素。
private List<SchemaTableResponse> filterTable(List<SchemaTableResponse> excelTableList, List<SchemaTableResponse> jdbcTableList) {
List<SchemaTableResponse> newExcelTableList = excelTableList.parallelStream()
.filter(et -> jdbcTableList.stream()
.map(jt -> jt.getSchema_name() + "&" + jt.getTable_name())
.collect(Collectors.toList())
.contains(et.getSchema_name() + "&" + et.getTable_name()))
.collect(Collectors.toList());
return newExcelTableList;
}
根据属性求两个集合的差集 A-B 注意是 !contains 不包含 对A进行过滤,留下与B属性不同(B映射出的list中不包含Alist的属性)的元素
private List<ColumnResConfigResponse> filterColumnAdd(List<ColumnResConfigResponse> operateColumnList, List<SchemaTableResponse> ) {
List<ColumnResConfigResponse> excelColumnAddList = operateColumnList.stream()
.filter(nc -> !tableResponseList.stream()
.map(rc -> rc.getTable_name() + "&" + rc.getColumnName())
.collect(Collectors.toList())
.contains(nc.getTableName() + "&" + nc.getColumnName()))
.collect(Collectors.toList());
return excelColumnAddList;
}
根据两个属性去重
//根据tableName+schemaName拿出已经编目的表 用tableName和schemaName去重
ArrayList<SchemaTableResponse> resTable = tableResponseList1.stream()
.collect(Collectors.collectingAndThen(
Collectors.toCollection(() -> new TreeSet<>(
Comparator.comparing(e -> e.getTable_name() + ";" + e.getSchema_name()))), ArrayList::new));