【发布时间】:2015-04-25 00:14:58
【问题描述】:
我知道我们使用可比较的函数对对象的ArrayList进行排序,以根据对象的某个属性进行排序。
但我总是想知道当我们直接在对象的 ArrayList 上调用 sort 时,例如:Collections.sort(arraylist);
它给出了您无法排序但实际上在打印对象时出现的错误,例如:
Instances in1=new Instances();
ArrayList al=new ArrayList();
al.add(in1);
System.out.println(al.get(0));
你得到输出:
Instances@45a8123b
这是一个对象的id。
因此,如果我们在 ArrayList 上调用排序,那么它可以根据 id 对对象进行排序。 那么,为什么我们在对对象的 ArrayList 进行排序时会出错?
【问题讨论】:
-
为什么要根据
hashCode对对象进行排序? -
根据这个
id排序,其实是hashcode,没有任何意义,人为什么要实现呢? -
@Lashane 你是对的,我只是在问默认情况下你可以有这个选项。例如,如果你想根据入学日期打印学生姓名,那么你可以打印对象。这是一个模糊的例子,但类似这样。
-
@ArjunChaudhary 使用 Java 8,您可以非常轻松地完成类似的操作。例如。
students.sort(Comparator.comparing(Student::getDate));.
标签: java sorting arraylist collections