Java 将整型数组从最高到最低排序
所以我刚刚了解了Java 将整型数组从最高到最低排序,java,arrays,sorting,Java,Arrays,Sorting,所以我刚刚了解了Arrays.sort(arrayName)并将其应用于我的一个项目中,但我发现它从最低到最高排序。有没有办法让它做相反的事情?(我不认为我需要发布有问题的代码,但如果需要,我会发布它)。如果使用整数[]而不是int[],那么可以将比较器作为第二个参数传递给排序方法。要实施反向排序,可以使用以下方法: 使用Integer[]而不是int[] 使用:返回一个比较器,该比较器对实现可比较接口的对象集合施加与自然顺序相反的顺序 如果可能,请使用ArrayList和Collections
Arrays.sort(arrayName)
并将其应用于我的一个项目中,但我发现它从最低到最高排序。有没有办法让它做相反的事情?(我不认为我需要发布有问题的代码,但如果需要,我会发布它)。如果使用整数[]
而不是int[]
,那么可以将比较器作为第二个参数传递给排序方法。要实施反向排序,可以使用以下方法:
使用Integer[]
而不是int[]
使用:返回一个比较器,该比较器对实现可比较接口的对象集合施加与自然顺序相反的顺序
如果可能,请使用ArrayList
和Collections.sort(list,Collections.reverseOrder())
进行更严格的区分
Integer[] intArr = new Integer[10];
// add some integer
Arrays.sort(intArr, Collections.reverseOrder())
如果您有一个int[]
数组,可以使用Arrays对其进行排序。排序
然后将其反转:
int [] tab2 = new int[]{1,5,0,-2};
Arrays.sort(tab2);
ArrayUtils.reverse(tab2);
System.out.print(Arrays.toString(tab2));
输出:
[5, 1, 0, -2]
反向方法的定义(从):
对于某些用例,您可以将排序的数组视为“反向排序”。例如,要从最高值迭代到最低值,您可以使用
int[] foo = ...;
Arrays.sort(foo);
for (int i=foo.length-1; i>=0; i--) {
doSomethingWith(foo[i]);
}
你会注意到还有另一个排序
方法,它接受一个比较器
@SotiriosDelimanolis:不要对int[]
进行排序。读这个,java.util.Comparator)@Jon有一个操作练习。@SotiriosDelimanolis这不是一个练习,我会发现它是数组
类的一个限制。效果很好!谢谢你的帮助!
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++;
}
}
int[] foo = ...;
Arrays.sort(foo);
for (int i=foo.length-1; i>=0; i--) {
doSomethingWith(foo[i]);
}