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);
}
}
}