当我运行下面的代码时,Collection.sort(l)将抛出异常下面。
线程"main“java.lang.ClassCastException中的异常:不能将learning.CollectionSort转换为java.lang.Comparable
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));
}
}
}这是因为我们必须实现可比较的或比较器来排序自定义对象。通常,我们将在一个对象中拥有用于排序的属性。
但是在上面的代码中,我们在这个类中没有属性。那么,对上述列表进行排序是可能的吗?请分享你的想法。
发布于 2016-11-25 06:18:04
但是在上面的代码中,我们在这个类中没有属性。那么,对上述列表进行排序是可能的吗?
是的,您可以编写一个基于哈希代码(hashCode())或字符串值(toString())的订单的hashCode(),并使用它对列表进行排序.
Collections.sort(l, new MyComparator()).但目前还不清楚这样做会得到什么好处,因为由此产生的命令没有特别的意义。实际上,如果您可以任意选择排序的基础,那么为什么不按照列表中的索引对列表元素进行排序呢?然后,您的列表总是在不调用任何方法的情况下进行琐碎排序。
https://stackoverflow.com/questions/40798748
复制相似问题