慕丝1322028
2020-03-24 21:17
如图,老师在第79行按照id进行了排序,最终结果符合预期。然后,老师在第84行按照name进行了排序,结果也符合预期。但我不理解的是,之前已经用Collections.sort(studentList)按照id进行了排序,为什么后来用Collections.sort(studentList, new StudentComparator())按照name进行排序就不再考虑之前id的顺序,最终输出的结果只按照name进行排序。
我想知道Collections.sort(studentList, new StudentComparator())中的studentList究竟有何
用处,它之前的排序为何被忽视了,是因为Comparator接口排序的优先度大于Cpmparable接口吗?
希望大家多多指教,谢谢!
comparator是临时的,compareable从默认的,也就是说,当你sort(studentList),这个时候因为没有给一个临时的comparator,compareable的意思是,当没有其他的规则时,按照默认的排序。
原理和初始化类似,初始化一个对象时,如果你不给参数,他就会按照默认的,给了就覆盖掉。
还有,不用纠结这些,第一遍学的时候建议了解整个框架即可,这些可以后来回过头来再看即可
1 排序规则实现的方法不同
Comparable接口的方法:compareTo(Object o)
Comparator接口的方法:compare(T o1, To2)
2 类设计前后不同
Comparable接口用于在类的设计中使用;设计初期,就实现这个借口,指定排序方式。
Comparator接口用于类设计已经完成,还想排序(Arrays)。
Java入门第三季
409792 学习 · 4340 问题
相似问题