根据属性求两个集合的交集 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));
这篇博客探讨了如何使用Java的Stream API进行集合的交集、差集和去重操作。通过示例代码展示了如何根据特定属性过滤元素,实现数据的筛选和整理,包括过滤出两个集合的交集、找出集合的差集以及根据两个属性进行去重。这些方法对于数据处理和比较至关重要。
2507

被折叠的 条评论
为什么被折叠?



