按降序排序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 }; List list = 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; }