String類有CompareTo方法,該方法按照字典順序比較兩個字符串的前后大小順序。有兩種情況。一個是兩個字符串有不同的字符,這種情況下,CompareTo方法會從出現不同字符的最小索引位k,去比較兩個字符串k索引位的字符的字典順序,排在前面的字符,那么該字符串就小,反之則大。另一種情況是,如果在兩個字符串的有效索引位中,字符都相同,則判斷兩個字符串長度,長度小的排在前面,長度大的排在后面。如果長度也相等,則兩個字符串就相等。
Compareable接口和Compartor接口
Compareable接口的CompareTo方法和Compartor接口的Compare()方法都是用來比較的,自定義的類如果想做排序,必須實現這兩個接口,重寫比較的方法,定義按照對象中的哪個屬性去做比較。兩個對象的比較,都是按照某個屬性來比較,而不是按照整個對象去比較的。
Collection.sort()和Arrays.sort()方法可以用來排序,sort()方法有兩個重載,一個是只傳入集合或數組就行。使用這種方法,則集合里的元素必須實現Compareable接口,重寫compareTo()方法,sort()底層是按照CompareTo()方法來比較的。sort()的另一個重載方法除了傳入要排序的集合,還要傳入一個外部比較器。外部選擇器實現Compartor接口,重寫compare方法,來定義比較集合中元素大小的方法。sort方法底層調用compare方法進行比較。