根据内部日期列表对JAVA父级列表进行排序

时间:2019-07-02 12:08:26

标签: java sorting java-stream comparator

我有一个要根据该类中另一个子对象中的日期列表进行排序的类。

型号:

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());
    }

但是没有帮助。期待真棒答案。

我希望学生名单排序。

2 个答案:

答案 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)对象,并对其进行排序。

我希望它将来对某人有帮助。