首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Java ArrayList集合排序

Java ArrayList集合排序
EN

Stack Overflow用户
提问于 2016-03-04 18:58:56
回答 3查看 247关注 0票数 1

我看到了一些关于Java中存在错误的集合的类型的问题。我所显示的错误是:

类型为sort(List<T>)的方法Collections不适用于参数(ArrayList<Time>)

我进口了java.util.Collections和ArrayList。我还导入了我正在调用的类。这是我的代码:

在被调用的类中:

代码语言:javascript
复制
private ArrayList<Time> times;

...

public ArrayList<Time> getTimes() {
        return this.times;
    }

在类中,我将数组列表调用为:

代码语言:javascript
复制
public class TimeTUI {
    private Scanner scan;
    private TimeManager timeManager;

...

private ArrayList<Time> getSortedTimes() {
    ArrayList<Time> sortedTimes = this.timeManager.getTimes();
    Collections.sort(sortedTimes);
    return sortedTimes;
}

错误出现在行上,显示:

代码语言:javascript
复制
Collections.sort(sortedTimes);
EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2016-03-04 19:01:41

上课时间必须是可比的。

Collections.sort(List)期望T类实现类似的接口。如果您使用了许多内置类,您不会发现问题,但是自定义类排序不知道如何对它们排序。因此,通过实现可比较的接口,您可以为方法compareTo提供定义。

代码语言:javascript
复制
public class Time implements Comparable {
  public int compareTo(Object o) {
    // provide your logic of how to sort Time objects. 
   }
}
票数 7
EN

Stack Overflow用户

发布于 2016-03-04 19:06:50

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

是指你打破了这个契约,而不是实现这个接口。类集合没有用于比较/排序列表的有效条件/规则,因此编译器会抱怨.

票数 2
EN

Stack Overflow用户

发布于 2016-03-04 19:07:38

我不认为ArrayList才是问题所在。例如:

代码语言:javascript
复制
ArrayList<String> names = new ArrayList<>();
...
Collections.sort(names);

效果很好。列表的内容必须是可比较的,这样排序才能工作。在这种情况下,Time类和任何子类型都必须实现可比较的。

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/35803984

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档