public List<GoodsSku> compareList(List<GoodsSku> list1, List<GoodsSku> list2) { // 将list1和list2的skuAttribute字段的值分割、排序后存入set中 Set<String> set1 = new HashSet<>(); Set<String> set2 = new HashSet<>(); list1.forEach(item -> set1.add(Arrays.stream(item.getSkuAttribute().split(":")).sorted().collect(Collectors.joining(":")))); list2.forEach(item -> set2.add(Arrays.stream(item.getSkuAttribute().split(":")).sorted().collect(Collectors.joining(":")))); // 遍历list2,如果list1中不包含当前元素,则说明该skuAttribute字段的值为新增,将其插入到数据库中 for (GoodsSku sku : list2) { String sortedSku = Arrays.stream(sku.getSkuAttribute().split(":")).sorted().collect(Collectors.joining(":")); if (!set1.contains(sortedSku)) { sku.insert(); } } // 遍历list1,如果list2中不包含当前元素,则说明该skuAttribute字段的值需要删除,将其从数据库中删除 for (GoodsSku sku : list1) { String sortedSku = Arrays.stream(sku.getSkuAttribute().split(":")).sorted().collect(Collectors.joining(":")); if (!set2.contains(sortedSku)) { sku.deleteById(); } } return list1; }这段代码,要返回一个以list1为主的新的list,其中执行insert的数据写入到新的list里面,删除的数据不存在于新的list里面,怎么实现
时间: 2024-03-09 18:45:33 浏览: 20
在遍历list2时,如果当前sku的skuAttribute字段的值在list1中不存在,则说明该skuAttribute字段的值为新增,将其插入到数据库中并添加到新的列表newList中。而在遍历list1时,如果当前sku的skuAttribute字段的值在list2中不存在,则说明该skuAttribute字段的值需要删除,将其从数据库中删除,并从newList中移除。最后,返回newList即可。
下面是修改后的代码,仅供参考:
```
public List<GoodsSku> compareList(List<GoodsSku> list1, List<GoodsSku> list2) {
// 将list1和list2的skuAttribute字段的值分割、排序后存入set中
Set<String> set1 = new HashSet<>();
Set<String> set2 = new HashSet<>();
list1.forEach(item -> set1.add(Arrays.stream(item.getSkuAttribute().split(":")).sorted().collect(Collectors.joining(":"))));
list2.forEach(item -> set2.add(Arrays.stream(item.getSkuAttribute().split(":")).sorted().collect(Collectors.joining(":"))));
List<GoodsSku> newList = new ArrayList<>(list1);
// 遍历list2,如果list1中不包含当前元素,则说明该skuAttribute字段的值为新增,将其插入到数据库中并添加到新的列表newList中
for (GoodsSku sku : list2) {
String sortedSku = Arrays.stream(sku.getSkuAttribute().split(":")).sorted().collect(Collectors.joining(":"));
if (!set1.contains(sortedSku)) {
sku.insert();
newList.add(sku);
}
}
// 遍历list1,如果list2中不包含当前元素,则说明该skuAttribute字段的值需要删除,将其从数据库中删除,并从newList中移除
Iterator<GoodsSku> iterator = newList.iterator();
while (iterator.hasNext()) {
GoodsSku sku = iterator.next();
String sortedSku = Arrays.stream(sku.getSkuAttribute().split(":")).sorted().collect(Collectors.joining(":"));
if (!set2.contains(sortedSku)) {
sku.deleteById();
iterator.remove();
}
}
return newList;
}
```