一、实现java.lang.Comparable接口,使类具有天生的比较能力,只需实现一个compareTo()方法。
例子:
class TestArray implements Comparable<TestArray> { int i; TestArray( int i) { this.i=i; } @Override public String toString() { return "TestArray"+i; } //实现compareTo方法 @Override public int compareTo(TestArray o) { return i<o.i?-1:(i==o.i?0:1); } }
//测试方法
public class Test { public static void main(String[] args) { TestArray[] t={new TestArray(3),new TestArray(1),new TestArray(2)}; System.out.println("befort sort:"); System.out.println(Arrays.toString(t)); //从小到大排序 System.out.println("after sort:"); Arrays.sort(t); System.out.println(Arrays.toString(t));
}
}
二、编写一个单独的类,实现comparator接口
class TestArrayComparator implements Comparator<TestArray> { @Override public int compare(TestArray o1, TestArray o2) { return o1.i>o2.i?-1:(o1.i==o2.i?0:1); } }
//测试类
public class Test {
public static void main(String[] args) {
TestArray[] t={new TestArray(3),new TestArray(1),new TestArray(2)};
System.out.println("befort sort:");
System.out.println(Arrays.toString(t));
//逆序排序
System.out.println("after sort:");
Arrays.sort(t,new TestArrayComparator());
System.out.println(Arrays.toString(t));
}
}