使用Collections.sort

时间:2016-12-02 09:04:11

标签: java sorting oop arraylist collections

我试图对事件的结束时间进行排序。在我的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);

2 个答案:

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

}