【发布时间】:2021-08-11 22:46:02
【问题描述】:
我的数据库返回给我一个重复的 java 对象列表,其中只有一个属性不同,即当然。 例如对于 1 名学生:2 个不同课程的 2 个学生对象。 我创建了一个模型类,我想在其中填充来自 db 的学生对象。 对于模型类中的课程,我创建了字符串列表。
所以对于每个学生: 我想将其课程添加到列表中并填充模型的其他字段
学生班:
public class Student {
private String name;
private int id;
private String email;
private String course;
}
StudentModel类:
public class StudentModel {
private String name;
private int id;
private String email;
private List<String> course;
}
我有:
Student student1("Tom",1,"tom@email.com","JAVA");
Student student2("Tom",1,"tom@email.com","DSA");
Student student3("JERRY",2,"jerry@email.com","C#");
我想要这样的东西:
StudentModel{name='TOM', id=1, email='TOM@email.com', course=[JAVA, DSA]}
StudentModel{name='Jerry', id=2, email='jsk@email.com', course=[C#]}
我正在尝试这样:
List<String> course = new ArrayList<>();
int id = studentList.get(0).getId();
studentModel=new StudentModel();
for(Student student : studentList){
if(id == student.getId()){
course.add(student.getCourse());
studentModel.setCourse(course);
}
else {
id = student.getId();
//studentModel.setCourse(course);
course.clear();
course.add(student.getCourse());
StudentModel studentModel = new StudentModel();
studentModel.setCourse(course);
}
studentModels.add(studentModel);
}
还有什么方法可以做到这一点?
【问题讨论】:
-
目前你所有的结果都使用一个共同的列表。不要那样做。为每个学生创建单独的列表。无论如何,假设 Student#id 对于代表一个特定学生的所有对象都是相同的,您可以按 ID 对所有这些对象进行分组,然后处理每个组以创建课程列表。
-
是的,尝试过这种方式,谢谢。