使用實現Comparator接口:java
排序時只須要在sort方法中傳入要排序的數組和一個比較器對象便可數組
1 public class Test { 2 public static void main(String[] args) { 3 // 注意,要想改變默認的排列順序,不能使用基本類型(int,double, char) 4 // 而要使用它們對應的類 5 Integer[] a = { 9, 8, 7, 2, 3, 4, 1, 0, 6, 5 }; 6 // 定義一個自定義類MyComparator的對象 7 Comparator cmp = new MyComparator(); 8 Arrays.sort(a, cmp); 9 for (int i = 0; i < a.length; i++) { 10 System.out.print(a[i] + " "); 11 } 12 } 13 } 14 15 // Comparator是一個接口 16 //Comparator是一個比較器 17 //Comparator中的compare能夠將傳入進行比對,按照返回的參數大於(1)等於(0)小於(-1)進行排序 18 //默認狀況下返回1的在後,返回-1的在前 19 //若是咱們須要逆序,只要把返回值-1和1的換位置便可。 20 class MyComparator implements Comparator<Integer> { 21 public int compare(Integer o1, Integer o2) { 22 // 若是o1小於o2,咱們就返回正值,若是n1大於n2咱們就返回負值, 23 if (o1 < o2) { 24 return 1; 25 } else if (o1 > o2) { 26 return -1; 27 } else { 28 return 0; 29 } 30 } 31 }
也能夠直接在sort方法中傳入java中提供的逆序比較器spa
Collections.reverseOrder();
API的解釋:
返回一個比較器,它強行逆轉實現了 Comparable 接口的對象 collection 的天然順序。(天然順序是經過對象自身的 compareTo 方法強行排序的。)此方法容許使用單個語句,以逆天然順序對實現了 Comparable 接口的對象 collection(或數組)進行排序(或維護)。例如,假設 a 是一個字符串數組。那麼:
Arrays.sort(a, Collections.reverseOrder());
將按照逆字典(字母)順序對數組進行排序。
返回的比較器是可序列化的。 code
因此能夠這麼寫對象
1 public class Test { 2 public static void main(String[] args) { 3 Integer[] A={10,23,42,12,20,6}; 4 Arrays.sort(A,Collections.reverseOrder()); 5 for(int a : A){ 6 System.out.println(a); 7 } 8 } 9 }