【问题标题】:Trouble with Sorting element of arrayListarrayList 的排序元素出现问题
【发布时间】:2017-04-18 14:03:18
【问题描述】:

这几天我遇到了麻烦,无法解决。我有一个可以存储的arrayList。

public class Application {

Time startTime = new Time(hour,minute);
Time endTime = new Time((startTime.getHour()), (startTime.getMinute() + duration));
Event e1 = new Event("Lecture", title, startTime, endTime);

我想根据我的 endTime 对我的事件进行排序,我遇到的问题是 endTime 是基于 startTime 的,它使用我的 Time 课程中的小时和分钟。当我尝试使用compareTo 时,我感到很困惑。我把它放在我的Time 类中,但后来意识到它必须在我的Event 类中才能比较实例。我将如何使用 compareTo 来比较 endTimes,以及如何输出排序。当我把 compareTo 放在我的事件中时,我得到了

The method sort(List<T>) in the type Collections is not applicable for the arguments (ArrayList<Event>)

            Collections.sort(events);

public Event(String type, String title, Time startTime, Time endTime) {
    this.type = type;
    this.title = title;
    this.startTime = startTime;
    this.endTime = endTime;
}

private int minute;

public Time(int hour, int minute) {
    this.minute = hour * 60 + minute;
}

我也可以extend 一个类,或者我必须实现它才能使用compareTo

【问题讨论】:

    标签: java sorting oop arraylist compareto


    【解决方案1】:

    如何使用 compareTo 来比较 endTimes,

    Event 类的compareTo 方法将调用Time 类的compareTo 方法,并将结果用作决定事件顺序的一部分。

    以及如何输出排序。

    一种方法是使用循环和printprintln 调用。

    当我将 compareTo 放入我的事件中时,我得到:"The method sort(List&lt;T&gt;) in the type Collections is not applicable for the arguments (ArrayList&lt;Event&gt;)"

    events 的类型声明为List&lt;Event&gt;

    顺便说一句,将compareTo 放入事件中并不会导致这种情况。这是由另一个更改/另一个错误引起的。

    我也可以扩展一个类,或者我必须实现它才能使用 compareTo

    任何需要可比较的类都需要“实现”Comparable 接口,并将其自己的类型作为类型参数;例如

    public class Event implements Comparable<Event> {
    

    那么它需要提供compareTo方法的实现。

    【讨论】:

    • 如何在Event 中的compareTo 中调用Time 类的compareTo 方法?
    • 与在对象实例上调用 any 方法的方式相同!
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-05-09
    • 2016-04-30
    • 1970-01-01
    • 1970-01-01
    • 2016-09-10
    • 1970-01-01
    相关资源
    最近更新 更多