繁体   English   中英

Java ArrayList集合排序

[英]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. 
   }
}

您在ListArrayList中的类类型必须实现comparable的接口,并正确覆盖compareTo(...)方法,

您是否违反此合同并且不实现该接口。 类集合没有有效的标准/规则来对列表进行比较/排序,因此您的编译器会抱怨...

我不认为这是ArrayList。 例如:

ArrayList<String> names = new ArrayList<>();
...
Collections.sort(names);

效果很好。 列表的内容必须具有可比性,这样排序才能起作用。 在这种情况下,Time类和任何子类型必须实现Comparable。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM