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; }
时间: 2024-04-26 15:23:30 浏览: 23
两个list比较 取不同的对象
4星 · 用户满意度95%
这是一个比较两个商品sku属性的方法,其中参数list1和list2分别代表了两个商品的sku列表。首先,将list1和list2中每个sku的skuAttribute字段的值按照冒号分割并排序,然后存入set1和set2中。接着,遍历list2中的每个sku,如果其skuAttribute字段的值在set1中不存在,则说明该skuAttribute字段的值为新增,将其插入到数据库中。然后,遍历list1中的每个sku,如果其skuAttribute字段的值在set2中不存在,则说明该skuAttribute字段的值需要删除,将其从数据库中删除。最后,返回list1。
阅读全文