springboot项目中有以下对象。
res.write()
我有一个要按Student {
private String studentId;
private Date courseStartedDate;
private List<Course> course;
public Date getCourseStartedDate() {
return courseStartedDate;
}
public void setCourseStartedDate(Date courseStartedDate) {
this.courseStartedDate = courseStartedDate;
}
public List<Course> getCourse() {
return course;
}
public void setCourse(List<Course> course) {
this.course = course;
}
}
Course{
private String courseId;
private CourseStatus courseStatus;
public CourseStatus getCourseStatus() {
return courseStatus;
}
public void setCourseStatus(CourseStatus courseStatus) {
this.courseStatus = courseStatus;
}
}
public Enum CourseStatus{
BEGINNER("beginner");
INTERMEDIATE("intermediate");
ADVANCED("advanced");
private String CourseStatus;
CourseStatus(String courseStatus) {
this.courseStatus = courseStatus;
}
public String getCourseStatus() {
return courseStatus;
}
}
和courseStartedDate
降序排列的学生列表。
我无法修改模型。
我可以按CourseStatus
对列表进行排序,如下所示:
courseStartedDate
我不确定如何修改上面的代码行以基于studentList.sort(Comparator.comparing(Student::getCourseStartedDate).reversed());
对列表进行排序?
我该如何实现?
答案 0 :(得分:1)
来自comment的澄清:
他的课程列表中的第一门课程可以视为他的主要课程。
由于CourseStatus
是enum
(不是Enum
),因此它自动是Comparable
,因此要按状态添加次要排序顺序,请致电{{3} }:
// ORDER BY courseStartedDate DESC, course[0].courseStatus DESC
studentList.sort(Comparator.comparing(Student::getCourseStartedDate)
.thenComparing(s -> s.getCourse().get(0).getCourseStatus())
.reversed());
或者,如果要按升序对状态进行排序:
// ORDER BY courseStartedDate DESC, course[0].courseStatus ASC
studentList.sort(Comparator.comparing(Student::getCourseStartedDate)
.reversed()
.thenComparing(s -> s.getCourse().get(0).getCourseStatus()));