Как я могу оптимизировать этот следующий код. Я хочу отображать на моем JTable колледжи, факультеты, курсы и студентов, которые в настоящее время изучают такие курсы.
public void display(){
...
for(College co: collegeDao.getColleges().stream().sorted(Comparator.comparing(College::getName)).collect(Collectors.toList())){
dtm.addRow(new Object[]{co.getName()});
for(Department department: deptDao.getDepartments().stream().sorted(Comparator.comparing(Department::getName)).collect(Collectors.toList())){
if(Objects.equals(department.getCollege().getId(), co.getId())){
dtm.addRow(new Object[]{null, department.getName()});
for(Course c: courseDao.getCourses().stream().sorted(Comparator.comparing(Course::getName)).collect(Collectors.toList())){
if(Objects.equals(c.getDepartment().getId(), department.getId())){
dtm.addRow(new Object[]{null, null, c.getName()});
for(Student st: cTakenDao.getCoursesTaken(c).stream().sorted(Comparator.comparing(Student::getName)).collect(Collectors.toList())){
dtm.addRow(new Object[]{null, null, null, st.getName()});
counter++;
}
}
}
dtm.addRow(new Object[]{null, null, null, null, "Maxumim Population Allowed "+department.getPopulation()});
dtm.addRow(new Object[]{null, null, null, null, "Remaining Slot "+(department.getPopulation()-counter)});
counter = 0;
}
}
}
...
Это действительно работает, но для загрузки моих данных в таблицу требуется время. Если я использую LEFT JOIN в своем SQL-запросе, все мои данные повторяются при отображении на моем JTable.
Надеюсь, кто-нибудь предложит лучшее решение, заранее спасибо.