//size-1
//需要校验 Map<String, List<InpuRuleConfigSaveDTO>> collect = dto.getInpuRuleConfigList().stream() .collect(Collectors.groupingBy(InpuRuleConfigSaveDTO::getEntryCandidate)); for (int i = 0; i <dto.getInpuRuleConfigList().size()-1 ; i++) { InpuRuleConfigSaveDTO dto1= dto.getInpuRuleConfigList().get(i); InpuRuleConfigSaveDTO dto2=dto.getInpuRuleConfigList().get(i+1); String entryCandidate1 =dto1.getEntryCandidate(); String entryCandidate2 = dto2.getEntryCandidate(); List<String> list1 = Arrays.asList(StrUtil.split(entryCandidate1, ",")); List<String> list2 = Arrays.asList(StrUtil.split(entryCandidate2, ",")); List<String> intersection = list1.stream().filter(item -> list2.contains(item)).collect(toList()); if(CollUtil.isNotEmpty(intersection)){ //需要校验职等-候选人状态存在交集 boolean verifyGrade=verifyIntersectionOfGrades(dto1,dto2); if(!verifyGrade) throw new RRException("职等候选人状态规则存在重复设置"); } }