我试图对事件的结束时间进行排序。在我的Event类endTime中,它位于我的Event类中,由我的Time类中的小时和分钟定义。
我的活动课程已添加implements Comparable<Event>
,但我收到了The type Event must implement the inherited abstract method Comparable<Event>.compareTo(Event)
。我尝试了快速修复add unimplemented methods
但收效甚微。
ArrayList<Event> events = new ArrayList <Event>();
Time endTime = new Time((startTime.getHour()), (startTime.getMinute() + duration));
在我的时间课程中,我使用compareTo
public class Time implements Comparable<Time> {
@Override
public int compareTo(Time time){
if (this.getHour() > time.getHour())
return 1;
else if (this.getHour() == time.getHour())
return 0;
else
return -1;
}
当我尝试在我的应用程序类中对arrayList进行排序时,我得到了
The method sort(List<T>) in the type Collections is not applicable for the arguments (ArrayList<Event>)
Collections.sort(events);
答案 0 :(得分:0)
Collections.sort()是:
public static <T extends Comparable<? super T>> void sort(List<T> list) {
list.sort(null);
}
所以,应该使Event实现可比而不是Time。
答案 1 :(得分:0)
如果您想根据事件时间对事件集合进行排序,那么Event类应该实现Comparable接口并使用Time类中的compare方法。
只需将Comparable接口的实现添加到Event类并比较其中的Time对象:
public class Event implements Comparable<Event>{
//removed fields and methods
@Override
public int compareTo(Event event){
return this.getTime().compareTo(event.getTime());
}
}