按降序对 int 数组进行排序
可能的重复:
按降序
对基元类型的数组进行排序 Java:如何以相反的顺序对浮点数组进行排序?
如何在Java中反转int数组?
以下代码将按升序对数组进行排序:
int a[] = {30,7,9,20};
Arrays.sort(a);
System.out.println(Arrays.toString(a));
我需要按降序对其进行排序。如何使用比较器来执行此操作?
请帮忙。
可能的重复:
按降序
对基元类型的数组进行排序 Java:如何以相反的顺序对浮点数组进行排序?
如何在Java中反转int数组?
以下代码将按升序对数组进行排序:
int a[] = {30,7,9,20};
Arrays.sort(a);
System.out.println(Arrays.toString(a));
我需要按降序对其进行排序。如何使用比较器来执行此操作?
请帮忙。
对于基元数组类型,您必须编写反向排序算法:
或者,您可以将 to 转换为并编写比较器:int[]
Integer[]
public class IntegerComparator implements Comparator<Integer> {
@Override
public int compare(Integer o1, Integer o2) {
return o2.compareTo(o1);
}
}
或使用,因为它仅适用于非基元数组类型。Collections.reverseOrder()
最后,
Integer[] a2 = convertPrimitiveArrayToBoxableTypeArray(a1);
Arrays.sort(a2, new IntegerComparator()); // OR
// Arrays.sort(a2, Collections.reverseOrder());
//Unbox the array to primitive type
a1 = convertBoxableTypeArrayToPrimitiveTypeArray(a2);
如果它不是一个大/长的数组,只需镜像它:
for( int i = 0; i < arr.length/2; ++i )
{
temp = arr[i];
arr[i] = arr[arr.length - i - 1];
arr[arr.length - i - 1] = temp;
}