[英]Java ArrayList Collections sort
我已经看到了一些有关Java出错的集合排序的问题。 我显示的错误是这样的:
类型
Collections
的方法sort(List<T>)
不适用于参数(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);
时间类必须是可比较的。
Collections.sort(List)期望类T实现Comparable接口。 如果您使用了许多内置类,则不会发现问题,但是对于自定义类,sort不知道如何对其进行排序。 因此,通过实现Comparable接口,可以为方法compareTo定义。
public class Time implements Comparable {
public int compareTo(Object o) {
// provide your logic of how to sort Time objects.
}
}
您在List
或ArrayList
中的类类型必须实现comparable
的接口,并正确覆盖compareTo(...)
方法,
您是否违反此合同并且不实现该接口。 类集合没有有效的标准/规则来对列表进行比较/排序,因此您的编译器会抱怨...
我不认为这是ArrayList。 例如:
ArrayList<String> names = new ArrayList<>();
...
Collections.sort(names);
效果很好。 列表的内容必须具有可比性,这样排序才能起作用。 在这种情况下,Time类和任何子类型必须实现Comparable。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.