按降序排序int数组

可能重复:
按降序对基本类型的数组进行排序
Java:如何以相反的顺序对浮点数组进行排序?
如何在Java中反转int数组?

以下代码将按升序对数组进行排序:

int a[] = {30,7,9,20}; Arrays.sort(a); System.out.println(Arrays.toString(a)); 

我需要按降序排序。 如何使用Comparator执行此操作?

请帮忙。

对于原始数组类型,您必须编写反向排序算法:

或者,您可以将int[]转换为Integer[]并编写比较器:

 public class IntegerComparator implements Comparator { @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); 
  Comparator comparator = new Comparator() { @Override public int compare(Integer o1, Integer o2) { return o2.compareTo(o1); } }; // option 1 Integer[] array = new Integer[] { 1, 24, 4, 4, 345 }; Arrays.sort(array, comparator); // option 2 int[] array2 = new int[] { 1, 24, 4, 4, 345 }; Listlist = Ints.asList(array2); Collections.sort(list, comparator); array2 = Ints.toArray(list); 

Guava有一个方法Ints.asList()用于创建由int[]数组支持的List 。 您可以将此与Collections.sort一起使用,以将Comparator应用于基础数组。

 List integersList = Ints.asList(arr); Collections.sort(integersList, Collections.reverseOrder()); 

请注意,后者是由实际数组支持的实时列表,因此它应该非常高效。

如果它不是一个大/长arrays只是反映它:

 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; }