【问题标题】:Why Collections.sort() doesn't work in Eclipse为什么 Collections.sort() 在 Eclipse 中不起作用
【发布时间】:2020-05-26 06:21:25
【问题描述】:

public interface Comparable <T>{ public int CompareTo (T other); }

public class CalendarDate implements Comparable<CalendarDate>{
private int month;
private int day;

public CalendarDate( int month, int day) {
    this.month = month;
    this.day = day;
}

public int CompareTo(CalendarDate other) {
    if (month != other.month) {
        return month - other.month;
    }
    else {
        return day - other.day;
    }
}

public int getMonth(){
    return month;
}
public int getDay() {
    return day;
}
public String toString() {
    return month + "/" + day;
}

}

import java.util.*;
public class CalendarDateTest {
    public static void main (String []args) {
        ArrayList <CalendarDate> dates = new ArrayList<CalendarDate>();
        dates.add(new CalendarDate(2,22));
        dates.add(new CalendarDate(10,30));
        dates.add(new CalendarDate(4, 13));
        dates.add(new CalendarDate(3,16));
        dates.add(new CalendarDate(4,28));
        System.out.println("birthdays = " + dates);
        Collections.sort(dates);
        System.out.println("birthdays = " + dates);

    }
}

我使用了我教科书中的一个确切示例,但 Collections.sort() 只是无法正常工作,请帮忙。 它说:

线程“main”java.lang.Error 中的异常:未解决的编译问题: Collections 类型中的方法 sort(List) 不适用于参数 (ArrayList)

at CalendarDateTest.main(CalendarDateTest.java:11)

【问题讨论】:

  • 这只是一个错字,很可能是:public int CompareTo(...) 应该是public int compareTo(...),带有一个小/非大写/较低的c。 Eclipse 不会将您的实现视为覆盖compareTo,因为方法名称不相等。此方法必须由Comparable 实现,并且Collections.sort() 需要集合中有效的Comparables。
  • 一开始是较低的 c 不起作用,我在网上看到了一些比较功能,让我以某种方式尝试了。但这不是问题,因为它仍然无法正常工作。线程“main”java.lang.Error 中的异常:未解决的编译问题:Collections 类型中的方法 sort(List) 不适用于 CalendarDateTest.main(CalendarDateTest.java: 11)

标签: java


【解决方案1】:

它在我的环境中工作,结果如下。我使用的是JDK8,您粘贴代码中的唯一问题是CompareTo函数应该是compareTo,C应该是小写。不要定义自己的 Comparable 接口。

生日 = [2/22、10/30、4/13、3/16、4/28] 生日 = [2/22、3/16、4/13、4/28、10/30]

And your question is the same as this

【讨论】:

  • 我尝试了小写,但它只是无法正常工作。线程“main”java.lang.Error 中的异常:未解决的编译问题:Collections 类型中的方法 sort(List) 不适用于 CalendarDateTest.main(CalendarDateTest.java: 11)
猜你喜欢
  • 2017-01-22
  • 1970-01-01
  • 2016-12-26
  • 2014-08-19
  • 1970-01-01
  • 1970-01-01
  • 2017-03-01
  • 2016-10-07
  • 1970-01-01
相关资源
最近更新 更多