我看到了一些关于Java中存在错误的集合的类型的问题。我所显示的错误是:
类型为
sort(List<T>)的方法Collections不适用于参数(ArrayList<Time>)
我进口了java.util.Collections和ArrayList。我还导入了我正在调用的类。这是我的代码:
在被调用的类中:
private ArrayList<Time> times;
...
public ArrayList<Time> getTimes() {
return this.times;
}在类中,我将数组列表调用为:
public class TimeTUI {
private Scanner scan;
private TimeManager timeManager;
...
private ArrayList<Time> getSortedTimes() {
ArrayList<Time> sortedTimes = this.timeManager.getTimes();
Collections.sort(sortedTimes);
return sortedTimes;
}错误出现在行上,显示:
Collections.sort(sortedTimes);发布于 2016-03-04 19:01:41
上课时间必须是可比的。
Collections.sort(List)期望T类实现类似的接口。如果您使用了许多内置类,您不会发现问题,但是自定义类排序不知道如何对它们排序。因此,通过实现可比较的接口,您可以为方法compareTo提供定义。
public class Time implements Comparable {
public int compareTo(Object o) {
// provide your logic of how to sort Time objects.
}
}发布于 2016-03-04 19:06:50
List或ArrayList中的类类型必须实现接口comparable并正确覆盖compareTo(...)方法,
是指你打破了这个契约,而不是实现这个接口。类集合没有用于比较/排序列表的有效条件/规则,因此编译器会抱怨.
发布于 2016-03-04 19:07:38
我不认为ArrayList才是问题所在。例如:
ArrayList<String> names = new ArrayList<>();
...
Collections.sort(names);效果很好。列表的内容必须是可比较的,这样排序才能工作。在这种情况下,Time类和任何子类型都必须实现可比较的。
https://stackoverflow.com/questions/35803984
复制相似问题