刚刚的代码,以list1为主,执行insert的数据追加到里面,delect的数据从里面移除,最终return出去,怎么改
时间: 2024-03-09 22:45:20 浏览: 56
如果您想修改该方法,使其返回两个列表(一个是新增的SKU列表,一个是删除的SKU列表),可以这样实现:
```
public Map<String, List<GoodsSku>> compareList(List<GoodsSku> list1, List<GoodsSku> list2) {
Map<String, List<GoodsSku>> result = new HashMap<>();
List<GoodsSku> insertList = new ArrayList<>(); // 存储新增的SKU
List<GoodsSku> deleteList = new ArrayList<>(); // 存储删除的SKU
// 将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字段的值为新增,将其插入到insertList中
for (GoodsSku sku : list2) {
String sortedSku = Arrays.stream(sku.getSkuAttribute().split(":")).sorted().collect(Collectors.joining(":"));
if (!set1.contains(sortedSku)) {
insertList.add(sku);
}
}
// 遍历list1,如果list2中不包含当前元素,则说明该skuAttribute字段的值需要删除,将其插入到deleteList中
for (GoodsSku sku : list1) {
String sortedSku = Arrays.stream(sku.getSkuAttribute().split(":")).sorted().collect(Collectors.joining(":"));
if (!set2.contains(sortedSku)) {
deleteList.add(sku);
}
}
result.put("insert", insertList);
result.put("delete", deleteList);
return result;
}
```
该方法将新增的SKU和删除的SKU分别存储到了两个列表中,并将这两个列表存储到一个Map中,最后返回该Map。
阅读全文