判断列表中是否存在重复的编号

//判断区间内是否有重复数据,重复数据总量可能会有差错,因为不是一一比较,而是比较完成后,选择满足条件的数据,
    // 只有符合条件中的数据才会和新数据比较,是只要数量>=2,肯定存在重复数据
    @Test
    public void test002(){
        User s1 = new User("RMM11-1004-A", "RMM11-1009-A","1");
        User s2 = new User("RMM11-1001-A", "RMM11-1005-A","2");
        User s3 = new User("RMM11-1002-A", "RMM11-1002-A","3");
        User s4 = new User("RMM11-1005-A", "RMM11-1006-A","4");
        User s5 = new User("RMM11-1009-A", "RMM11-1019-A","5");
        User s6 = new User("RMM11-1005-B", "RMM11-1006-B","6");
        User s7 = new User("RMM01-1005-B", "RMM01-1006-B","7");
        List<User> list = Arrays.asList(s1,s2,s3,s5,s6,s7);
        Map<String, Map<String,User>>sssss5=list.stream().collect(
                Collectors.groupingBy(
                        u->u.getCodeStart().substring(0,6)+"#"+u.getCodeStart().substring(10),
                        HashMap::new,
                        Collectors.toMap(
                                k->k.getCodeStart().substring(0,6),
                                v->v,
                                (v1,v2)->{
                                    System.out.println("v1=="+v1);
                                    System.out.println("v2=="+v2);
                                    Integer v1_codeStart = Integer.valueOf(v1.getCodeStart().substring(6, 10));
                                    Integer v1_codeEnd = Integer.valueOf(v1.getCodeEnd().substring(6, 10));
                                    Integer v2_codeStart = Integer.valueOf(v2.getCodeStart().substring(6, 10));
                                    Integer v2_codeEnd = Integer.valueOf(v2.getCodeEnd().substring(6, 10));
                                    User result=null;

                                    if(v1_codeStart>=v2_codeStart &&v1_codeStart<=v2_codeEnd) {
                                        result=  CopyBeanUtil.copy(v2,User.class);
                                        Integer num=result.getNum()+1;
                                        result.setNum(num);
                                        if(StringUtils.isEmpty(v1.getRepeatCode())){
                                            result.setRepeatCode(v1.getCodeStart());
                                        }

                                    }else if(v1_codeEnd>=v2_codeStart &&v1_codeEnd<=v2_codeEnd){
                                        result=  CopyBeanUtil.copy(v2,User.class);
                                        Integer num=result.getNum()+1;
                                        result.setNum(num);
                                        if(StringUtils.isEmpty(v1.getRepeatCode())){
                                            result.setRepeatCode(v1.getCodeEnd());
                                        }
                                    }else if(v2_codeStart>=v1_codeStart &&v2_codeStart<=v1_codeEnd ){
                                        result=  CopyBeanUtil.copy(v1,User.class);
                                        Integer num=result.getNum()+1;
                                        result.setNum(num);
                                        if(!StringUtils.isEmpty(v1.getRepeatCode())){
                                            result.setRepeatCode(v1.getRepeatCode());
                                        }else{
                                            result.setRepeatCode(v2.getCodeStart());
                                        }

                                    }else if(v2_codeEnd>=v1_codeStart&& v2_codeEnd<=v1_codeEnd){
                                        result=  CopyBeanUtil.copy(v1,User.class);
                                        Integer num=result.getNum()+1;
                                        result.setNum(num);
                                        if(!StringUtils.isEmpty(v1.getRepeatCode())){
                                            result.setRepeatCode(v1.getRepeatCode());
                                        }else{
                                            result.setRepeatCode(v2.getCodeEnd());
                                        }
                                    }else{
                                        result=  CopyBeanUtil.copy(v1,User.class);
                                    }
//                                    if((v1_codeStart>=v2_codeStart &&v1_codeStart<=v2_codeEnd)
//                                            ||(v1_codeEnd>=v2_codeStart &&v1_codeEnd<=v2_codeEnd)
//                                            || (v2_codeStart>=v1_codeStart &&v2_codeStart<=v1_codeEnd)
//                                            || (v2_codeEnd>=v1_codeStart&& v2_codeEnd<=v1_codeEnd)
//                                    ){
//                                        Integer num=v1.getNum()+1;
//                                        v1.setNum(num);
//                                    }
                                    return result;
                                }
                        )
                )
        );
        System.out.println("sssss5===="+sssss5);
        //分组后查询开始编号
        List<String>io= sssss5.entrySet().stream().flatMap(k->{
          return   k.getValue().entrySet().stream().map(m->{
              return m.getValue().getCodeStart();
          });
        }).collect(Collectors.toList());
        System.out.println("io===="+io);

     List<User>sss=  sssss5.entrySet().stream().flatMap(m->m.getValue().entrySet().stream().map(d->
                {
                    User user=new User();
                    user.setCodeStart(m.getKey());
                    user.setCodeEnd(d.getValue().getCodeStart());
                    user.setNum(d.getValue().getNum());
                    return  user;
                }
        )).collect(Collectors.collectingAndThen(Collectors.toList(),m->m.stream().filter(d->d.getNum()>1))).collect(Collectors.toList());
        System.out.println(sss);
    }
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值