//判断区间内是否有重复数据,重复数据总量可能会有差错,因为不是一一比较,而是比较完成后,选择满足条件的数据, // 只有符合条件中的数据才会和新数据比较,是只要数量>=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); }
判断列表中是否存在重复的编号
最新推荐文章于 2023-02-08 10:59:52 发布