我想了解一下排序優先度的問題
如圖,老師在第79行按照id進行了排序,最終結果符合預期。然后,老師在第84行按照name進行了排序,結果也符合預期。但我不理解的是,之前已經用Collections.sort(studentList)按照id進行了排序,為什么后來用Collections.sort(studentList, new StudentComparator())按照name進行排序就不再考慮之前id的順序,最終輸出的結果只按照name進行排序。
我想知道Collections.sort(studentList, new StudentComparator())中的studentList究竟有何
用處,它之前的排序為何被忽視了,是因為Comparator接口排序的優先度大于Cpmparable接口嗎?
希望大家多多指教,謝謝!
2020-03-24
comparator是臨時的,compareable從默認的,也就是說,當你sort(studentList),這個時候因為沒有給一個臨時的comparator,compareable的意思是,當沒有其他的規則時,按照默認的排序。
原理和初始化類似,初始化一個對象時,如果你不給參數,他就會按照默認的,給了就覆蓋掉。
2020-03-24
還有,不用糾結這些,第一遍學的時候建議了解整個框架即可,這些可以后來回過頭來再看即可
2020-03-24
1 排序規則實現的方法不同
Comparable接口的方法:compareTo(Object o)
Comparator接口的方法:compare(T o1, To2)
2 類設計前后不同
Comparable接口用于在類的設計中使用;設計初期,就實現這個借口,指定排序方式。
Comparator接口用于類設計已經完成,還想排序(Arrays)。