1. 程式人生 > >Arrays.sort()用來自定義排序的使用

Arrays.sort()用來自定義排序的使用

compareTo方法:
public int compareTo(String anotherString)按字典順序比較兩個字串。該比較基於字串中各個字元的 Unicode 值。按字典順序將此 String 物件表示的字元序列與引數字串所表示的字元序列進行比較。如果按字典順序此 String 物件位於引數字串之前,則比較結果為一個負整數。如果按字典順序此 String 物件位於引數字串之後,則比較結果為一個正整數。如果這兩個字串相等,則結果為 0;compareTo 只在方法 equals(Object) 返回 true 時才返回 0。
這是字典排序的定義。如果這兩個字串不同,那麼它們要麼在某個索引處的字元不同(該索引對二者均為有效索引),要麼長度不同,或者同時具備這兩種情況。如果它們在一個或多個索引位置上的字元不同,假設 k 是這類索引的最小值;則在位置 k 上具有較小值的那個字串(使用 < 運算子確定),其字典順序在其他字串之前。在這種情況下,compareTo 返回這兩個字串在位置 k 處兩個char 值的差,即值:

this.charAt(k)-anotherString.charAt(k)
如果沒有字元不同的索引位置,則較短字串的字典順序在較長字串之前。在這種情況下,compareTo 返回這兩個字串長度的差,即值:
this.length()-anotherString.length()

指定者:
介面 Comparable 中的 compareTo
引數:
anotherString - 要比較的 String。
返回:
如果引數字串等於此字串,則返回值 0;如果此字串按字典順序小於字串引數,則返回一個小於 0 的值;如果此字串按字典順序大於字串引數,則返回一個大於 0 的值

package
com.tjrac_java_2; import java.util.ArrayList; import java.util.Arrays; import java.util.Comparator; import java.util.List; class People{ int age; String name; public People(String name,int age){ this.name=name; this.age=age; } public int getAge() { return
age; } public String getName() { return name; } } class rule implements Comparator<String>{ @Override public int compare(String o1, String o2) { /* if(o1.compareTo(o2)<0){ return 1; }else{ return 0; }*/ return o1.compareTo(o2); } } public class ReSort { public static void main(String[] args) { People p = new People("魏傑",22); People p1 = new People("宋光來",21); People p2 = new People("楊",23); People [] s=new People[3]; s[0]=p; s[1]=p1; s[2]=p2; Arrays.sort(s,new Comparator<People>(){ @Override public int compare(People o1, People o2) { // if(o1.age>=o2.age){ // return 1; // } // else { // return 0; // } return o1.age-o2.age; } }); System.out.println("---------------------------"); for (People pp : s) { System.out.println(pp.name+"->"+pp.getAge()); } String[] str ={"一","一一一一","一一一","一"}; Arrays.sort(str,new rule()); for (String string : str) { System.out.println(string); } } }