批量查询时,有个问题
两个相关联的数据
需要再次拼装
这时
可能得
for循环两次
然后if判断两个list
关联部分是否相等
for (Clazz clazz:clazzes){
List<Student> filter = students.stream().filter(s ->s.getNumber().equals(clazz.getStudentNumber())).collect(Collectors.toList());
if(!CollectionUtils.isEmpty(filter)) {
result.add(filter.get(0));
}
}
for (Clazz clazz:clazzes){
for (Student student: students) {
if(student.getNumber().equals(clazz.getStudentNumber())){
}
}
}
就是会循环多次
两次这样
这里优化办法
查询时直接分组 为map
将关联部分作为key
直接map.get
省去一次for循环
Map<String, List<Student>> map =
students.stream().collect(Collectors.groupingBy(Student::getNumber));
for (Clazz clazz:clazzes){
map.get(clazz.getStudentNumber());
}