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

Java集合排序
EN

Stack Overflow用户
提问于 2016-11-25 06:09:21
回答 2查看 442关注 0票数 0

当我运行下面的代码时,Collection.sort(l)将抛出异常下面。

线程"main“java.lang.ClassCastException中的异常:不能将learning.CollectionSort转换为java.lang.Comparable

代码语言:javascript
复制
public class CollectionSort {  
    public static void main (String[] args){
        List l = new ArrayList();
        CollectionSort obj1 = new CollectionSort();
        CollectionSort obj2 = new CollectionSort();
        l.add(obj1);
        l.add(obj2);
        Collections.sort(l);
        for (int i = 0; i < l.size(); i++){
            System.out.println(l.get(i));
        }
    }
}

这是因为我们必须实现可比较的或比较器来排序自定义对象。通常,我们将在一个对象中拥有用于排序的属性。

但是在上面的代码中,我们在这个类中没有属性。那么,对上述列表进行排序是可能的吗?请分享你的想法。

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2016-11-25 06:18:04

但是在上面的代码中,我们在这个类中没有属性。那么,对上述列表进行排序是可能的吗?

是的,您可以编写一个基于哈希代码(hashCode())或字符串值(toString())的订单的hashCode(),并使用它对列表进行排序.

代码语言:javascript
复制
Collections.sort(l, new MyComparator()).

但目前还不清楚这样做会得到什么好处,因为由此产生的命令没有特别的意义。实际上,如果您可以任意选择排序的基础,那么为什么不按照列表中的索引对列表元素进行排序呢?然后,您的列表总是在不调用任何方法的情况下进行琐碎排序。

票数 0
EN

Stack Overflow用户

发布于 2016-11-25 06:29:21

可比界面类或

创建比较器实现类作为参数传递给Collections.sort(collection,comparatorReference);

集合类文档。

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

https://stackoverflow.com/questions/40798748

复制
相关文章

相似问题

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