if(regionalAssessmentQuery.getGrade()!=null&®ionalAssessmentQuery.getGrade()!="" &®ionalAssessmentDTOS.size()>0){
List<RegionalAssessmentDTO> collect = regionalAssessmentDTOS.stream().filter(regionalAssessmentDTO -> {
regionalAssessmentDTO.setRegionalAssessmentDTOS(regionalAssessmentDTOS.stream().filter(assessmentDTO -> {
assessmentDTO.setRegionalAssessmentDTOS(assessmentDTO.getRegionalAssessmentDTOS().stream().filter(regionalAssessmentDTO2 -> regionalAssessmentDTO2.getType() == null ? false : regionalAssessmentDTO2.getType().equals(regionalAssessmentQuery.getGrade())).collect(Collectors.toList()));
return assessmentDTO.getRegionalAssessmentDTOS().size() > 0;
}).collect(Collectors.toList()));
return regionalAssessmentDTO.getRegionalAssessmentDTOS().size() > 0;
}).collect(Collectors.toList());
dtoPage.setRecords(collect);
}else dtoPage.setRecords(regionalAssessmentDTOS);
如果你的条件搜索涉及到多个方法互相调用,可能会形成长链调用,最终导致栈溢出。在这种情况下,你可以考虑优化你的代码逻辑,减少方法之间的相互依赖。
在这里插入代码片
//改善堆栈溢出
if(regionalAssessmentQuery.getGrade()!=null&®ionalAssessmentQuery.getGrade()!="" &®ionalAssessmentDTOS.size()>0){
for (RegionalAssessmentDTO regionalAssessmentDTO : regionalAssessmentDTOS) {
for (RegionalAssessmentDTO assessmentDTO : regionalAssessmentDTO.getRegionalAssessmentDTOS()) {
assessmentDTO.setRegionalAssessmentDTOS(assessmentDTO.getRegionalAssessmentDTOS().stream().filter(regionalAssessmentDTO2 -> regionalAssessmentDTO2.getType() == null ? false : regionalAssessmentDTO2.getType().equals(regionalAssessmentQuery.getGrade())).collect(Collectors.toList()));
}
regionalAssessmentDTO.setRegionalAssessmentDTOS( regionalAssessmentDTO.getRegionalAssessmentDTOS().stream().filter(regionalAssessment->{
return regionalAssessment.getRegionalAssessmentDTOS().size()>0;
}).collect(Collectors.toList()));
}
List<RegionalAssessmentDTO> collect = regionalAssessmentDTOS.stream().filter(regionalAssessmentDTO -> {
return regionalAssessmentDTO.getRegionalAssessmentDTOS().size() > 0;
}).collect(Collectors.toList());
dtoPage.setRecords(collect);
}else dtoPage.setRecords(regionalAssessmentDTOS);