所以我刚刚了解了Arrays.sort(arrayName);
并将其应用于我的一个项目中,但我发现它从最低到最高。反正有没有相反的做法? (我不认为我需要发布有问题的代码,但如果需要,我会发布它。)
答案 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)
Integer[]
代替int[]
Collections.reverseOrder()
:返回一个比较器,它对实现Comparable接口的对象集合施加自然顺序的反转如果可能,请使用ArrayList<Integer>
和Collections.sort(list, Collections.reverseOrder())
来表示更强的案例。
Integer[] intArr = new Integer[10];
// add some integer
Arrays.sort(intArr, Collections.reverseOrder())