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