可能重复:
Sort arrays of primitive types in descending order
Java : How to sort an array of floats in reverse order?
How do I reverse an int array in Java?
以下代码将按升序顺序对数组进行排序:
int a[] = {30,7,9,20};
Arrays.sort(a);
System.out.println(Arrays.toString(a));
我需要按降序顺序对其进行排序。如何使用Comparator执行此操作?
请帮忙。
答案 0 :(得分:17)
对于基本数组类型,您必须编写反向排序算法:
或者,您可以将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);
答案 1 :(得分:6)
Comparator<Integer> comparator = new Comparator<Integer>() {
@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<Integer>list = Ints.asList(array2);
Collections.sort(list, comparator);
array2 = Ints.toArray(list);
答案 2 :(得分:5)
Guava有一个方法Ints.asList()
,用于创建由List<Integer>
数组支持的int[]
。您可以将它与Collections.sort一起使用,以将Comparator应用于基础数组。
List<Integer> integersList = Ints.asList(arr);
Collections.sort(integersList, Collections.reverseOrder());
请注意,后者是由实际数组支持的实时列表,因此它应该非常有效。
答案 3 :(得分:4)
如果它不是一个大/长阵列只是反映它:
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;
}