集合去重

情况说明: newDepartmentListHasMatch,newUserDepartmentList为两条泛型为UserDepartment的ArrayList,整合成一条新的ArrayList,要求UserDepartment的UserDepartmentId不可重复。要求去重后者的记录

一、Set去重

        //存放整合后的集合
        List<UserDepartment> newList = new ArrayList<>();
        newList.addAll(newDepartmentListHasMatch);
        newList.addAll(newUserDepartmentList);
        //去重后者,后者数据已经存在
        Set<UserDepartment> userDepartmentSet = new TreeSet<>(new Comparator<UserDepartment>() {
            @Override
            public int compare(UserDepartment o1, UserDepartment o2) {
                return o1.getUserDepartmentId().compareTo(o2.getUserDepartmentId());
            }
        });
        userDepartmentSet.addAll(newList);

总结:以前只是用过Set对基本数据类型的去重,对于这种新知识的了解,就很想尝试运用到自己的代码,但是这里也遇到了一个问题,最后也么找到一个好一点的方法,最后放弃了。问题就是:TreeSet筛选后的数据的顺序问题,虽然在数据的重复问题上,很完美有相比第二种方法更加优雅的解决了问题,但是作为业务代码,ID这个顺序还是很重要的,最后没有找到办法只能放弃。

二、Map去重

       //存放整合后的集合
       List<UserDepartment> newList = new ArrayList<>();
	   newList.addAll(newDepartmentListHasMatch);
       Map<String,UserDepartment> map = newDepartmentListHasMatch.stream()
                .collect(Collectors.toMap(UserDepartment::getUserDepartmentId,Function.identity()));

        //去重后者,后者数据已经存在
        for(UserDepartment userDepartment:newUserDepartmentList){
            if(!map.containsKey(userDepartment.getUserDepartmentId())){
                newList.add(userDepartment);
            }
        }

总结:运用map的键的唯一性,把前者转换成map,将userDepartmetnId作为键,之后循环后者集合,如果map包含的键已经存在则废弃,很常规的想法,感觉在实习生活里,Map的运用还是很方便,也很快捷的。这里也出现了一个问题,因为开发环境在数据库中,脏数据存在时,如果newDepartmentListHasMatch本来村存在相同的userDepartmntId的时候,就会直接报错。

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值