集合异同,找出新增元素和删除元素

更新操作时,数据库的数据是一个集合A,请求更新的集合是B,那么如何找出更新的集合中的新增元素和删除元素呢?
例如

A B
1 1
2
3 3
4 4
5

A是原来的集合,B是后来的集合。
可见B删除了2,并增加了5。

找新增: 遍历B,A不包含的元素为新增元素
找删除: 遍历A,B不包含的元素为删除元素

HashSet<Long> idsOnDb = new HashSet<>();
        idsOnDb.add(1l);
        idsOnDb.add(2l);
        idsOnDb.add(3l);
        idsOnDb.add(4l);
        
        HashSet<Long> idsOnHttp = new HashSet<>();
        idsOnHttp.add(1l);
        idsOnHttp.add(3l);
        idsOnHttp.add(4l);
        idsOnHttp.add(5l);
        
        // 新增的用户id集合
        List<Long> idsAdd = idsOnHttp
            .stream()
            // 筛选新增的,在数据库的集合中没有找到的即为新增的
            .filter(idUpdate -> !idsOnDb.contains(idUpdate))
            .collect(Collectors.toList());

        // 删除的角色id集合
        List<Long> idsDeleted = idsOnDb
            .stream()
            .distinct()
            .filter(idOnDb -> !idsOnHttp.contains(idOnDb))
            .collect(Collectors.toList());
        
posted @ 2020-10-30 17:04  小小记录本  阅读(293)  评论(0编辑  收藏  举报