为了账号安全,请及时绑定邮箱和手机立即绑定

我想了解一下排序优先度的问题

如图,老师在第79行按照id进行了排序,最终结果符合预期。然后,老师在第84行按照name进行了排序,结果也符合预期。但我不理解的是,之前已经用Collections.sort(studentList)按照id进行了排序,为什么后来用Collections.sort(studentList, new StudentComparator())按照name进行排序就不再考虑之前id的顺序,最终输出的结果只按照name进行排序。

我想知道Collections.sort(studentList, new StudentComparator())中的studentList究竟有何

http://img1.sycdn.imooc.com//5e7a087c0001a5ed15020520.jpg

http://img1.sycdn.imooc.com//5e7a087c0001035409820535.jpg

用处,它之前的排序为何被忽视了,是因为Comparator接口排序的优先度大于Cpmparable接口吗?

希望大家多多指教,谢谢!

正在回答

3 回答

comparator是临时的,compareable从默认的,也就是说,当你sort(studentList),这个时候因为没有给一个临时的comparator,compareable的意思是,当没有其他的规则时,按照默认的排序。

原理和初始化类似,初始化一个对象时,如果你不给参数,他就会按照默认的,给了就覆盖掉。

1 回复 有任何疑惑可以回复我~
#1

慕丝1322028 提问者

嗯,感谢回答。我能明白它是怎么运行的。但没有彻底弄清原理。希望在今后的学习中能明白吧。
2020-03-31 回复 有任何疑惑可以回复我~

还有,不用纠结这些,第一遍学的时候建议了解整个框架即可,这些可以后来回过头来再看即可

1 回复 有任何疑惑可以回复我~

1 排序规则实现的方法不同

Comparable接口的方法:compareTo(Object o)

Comparator接口的方法:compare(T o1, To2)

2 类设计前后不同

Comparable接口用于在类的设计中使用;设计初期,就实现这个借口,指定排序方式。

Comparator接口用于类设计已经完成,还想排序(Arrays)。


1 回复 有任何疑惑可以回复我~

举报

0/150
提交
取消

我想了解一下排序优先度的问题

我要回答 关注问题
意见反馈 帮助中心 APP下载
官方微信