你可以用两种不同的方式对这个ArrayList进行排序吗?编写自己的Comparator?

raw*_*ang 0 java arraylist

我有一个名为Course的对象的ArrayList,我试图通过courseID和courseStartTime以两种方式对它进行排序.

编辑:澄清我的意思是我想在某个时间点按courseID对其进行排序,然后在另一个时间按courseStartTime对其进行排序.

class Course implements Comparable<Course> {
    private int courseID;
    private String courseBeginTime;

    @Override
    public int compareTo(Course course) {
        //what to return?
    }
Run Code Online (Sandbox Code Playgroud)

如果我写了两个我自己的比较器,一个用于比较courseID,另一个用于courseStarTime,那么compareTo()类中的方法没有被使用,我不知道要返回什么.

如果我想使用这个compareTo()方法,我不知道怎么写它所以我可以比较courseIDcourseStartTime.

小智 8

您可以实现两个不同的比较器.

public class CourseComparatorById implements Comparator<Course> {

    @Override
    public int compare(Course o1, Course o2) {
        // for example - sort ascending by ID
        return o1.getId() - o2.getId();
    }
}

public class CourseComparatorByStartTime implements Comparator<Course> {

    @Override
    public int compare(Course o1, Course o2) {
        // for example - sort ascending by start time
        return o1.getStartTime() - o2.getStartTime();
    }
}
Run Code Online (Sandbox Code Playgroud)

然后使用它们对数组进行排序.

List<Course> courses = ...

Collections.sort(courses, new CourseComparatorById());
// now it's sorted by ID

Collections.sort(courses, new CourseComparatorByStartTime());
// now it's sorted by start time
Run Code Online (Sandbox Code Playgroud)