将int数组从最高到最低排序

时间:2013-11-27 19:49:42

标签: java arrays sorting

所以我刚刚了解了Arrays.sort(arrayName);并将其应用于我的一个项目中,但我发现它从最低到最高。反正有没有相反的做法? (我不认为我需要发布有问题的代码,但如果需要,我会发布它。)

4 个答案:

答案 0 :(得分:10)

如果使用Integer[]代替int[],则可以将Comparator作为第二个参数传递给sort方法。要实施反向排序,您可以使用Collections.reverseOrder()方法:

Arrays.sort(arr, Collections.reverseOrder());

答案 1 :(得分:3)

如果您有int[]数组,可以使用Arrays.sort对其进行排序,然后将其反转:

int [] tab2 = new int[]{1,5,0,-2};
Arrays.sort(tab2);
ArrayUtils.reverse(tab2);
System.out.print(Arrays.toString(tab2));

输出:

[5, 1, 0, -2]

Code反向方法(来自org.apache.commons.lang.ArrayUtils.reverse(int[])):

public static void reverse(int[] array) {
        if (array == null) {
            return;
        }
        int i = 0;
        int j = array.length - 1;
        int tmp;
        while (j > i) {
            tmp = array[j];
            array[j] = array[i];
            array[i] = tmp;
            j--;
            i++;
        }
}

答案 2 :(得分:1)

对于某些用例,您可以将排序后的数组视为“反向排序”。例如。迭代从最高到最低的数字你可以使用

int[] foo = ...;
Arrays.sort(foo);
for (int i=foo.length-1; i>=0; i--) { 
  doSomethingWith(foo[i]);
 }

答案 3 :(得分:0)

  1. 使用Integer[]代替int[]
  2. 使用Collections.reverseOrder():返回一个比较器,它对实现Comparable接口的对象集合施加自然顺序的反转
  3. 如果可能,请使用ArrayList<Integer>Collections.sort(list, Collections.reverseOrder())来表示更强的案例。

    Integer[] intArr = new Integer[10];
     // add some integer 
    Arrays.sort(intArr, Collections.reverseOrder())