使用實現Comparator接口:
排序時只需要在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中提供的逆序比較器
Collections.reverseOrder();
API的解釋:
返回一個比較器,它強行逆轉實現了 Comparable 接口的對象 collection 的自然順序。(自然順序是通過對象自身的 compareTo 方法強行排序的。)此方法允許使用單個語句,以逆自然順序對實現了 Comparable 接口的對象 collection(或數組)進行排序(或維護)。例如,假設 a 是一個字符串數組。那么:
Arrays.sort(a, Collections.reverseOrder());
將按照逆字典(字母)順序對數組進行排序。
返回的比較器是可序列化的。
所以可以這么寫
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 }