java您可以用两种不同的方式对这个ArrayList进行排序,编写自己的比较器吗?
我有一个名为Course的对象数组列表,我试图按courseID和courseStartTime两种方式对它进行排序
编辑:为了澄清我的意思,我想在某个时间点按courseID排序,然后在另一个时间点按courseStartTime排序
class Course implements Comparable<Course> {
private int courseID;
private String courseBeginTime;
@Override
public int compareTo(Course course) {
//what to return?
}
如果我编写了两个自己的比较器,一个用来比较courseID
,另一个用来比较courseStarTime
,那么类中的compareTo()
方法就不用了,我不知道返回什么
如果我想使用compareTo()
方法,我不确定如何编写它,以便比较courseID
和courseStartTime
# 1 楼答案
也许你应该这样做
# 2 楼答案
可以实现两个不同的比较器
然后使用它们对数组进行排序
# 3 楼答案
我有一种感觉,这是被用于在线注册网络应用。。。 您可能正在从RDB获取数据源。。。将所有课程放在一个列表(一个实体)中并保存是不明智的。我会为每个课程创建一个对象(包含courseID和courseBeginTime),并将它们全部保存。然后在查询时,添加提示,根据实体中的任何根参数(如courseID或courseBeginTime)对实体进行排序,最后是一个列表,其中包含按所需方式排序的对象:):)
# 4 楼答案
您也可以尝试Java 8 Lambda方式:
注意,在Java 8中,您不必使用
Collections.sort
,因为新的List
接口还提供了sort
方法