【发布时间】: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