我有一个要根据该类中另一个子对象中的日期列表进行排序的类。
型号:
Student {
String name;
List<Action> actions;
}
Action {
String type;
Date lastActionDate;
}
所以现在我有要排序的列表,以便执行最新学生的动作排在第一位。
我尝试过:
public Date getLatestActionDate() {
return actions.stream().map(a -> a.lastActionDate).min(Date::compareTo).get();
}
@Override
public int compareTo(Student o) {
return getLatestActionDate().compareTo(o.getLatestActionDate());
}
但是没有帮助。期待真棒答案。
我希望学生名单排序。
答案 0 :(得分:0)
您可以使用在getLatestActionDate
中创建的Comparator
方法,并将列表排序为:
students.sort(Comparator.comparing(student -> getLatestActionDate(student.getActions())))
答案 1 :(得分:0)
已修复:
对于家长班:
Collections.sort(students, (o1, o2) -> o2.getActions().get(0).getLastActionDate().compareTo(o1.getActions().get(0).getLastActionDate()));
在子类Action中,将getActions()的getter更新为:
public List<Actions> getActions() {
Collections.sort(actions, (o1, o2) -> o2.getLastActionDate().compareTo(o1.getLastActionDate()));
return actions;
}
因此,首先我们对具有日期对象的内部对象进行排序,然后在父对象中,获取第一个 get(0)对象,并对其进行排序。
我希望它将来对某人有帮助。