可能重复:排序int数组
:
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数组
:
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[]
转换为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);
Guava有一个方法Ints.asList()
创建List<Integer>
支持int[]
阵列。你可以在Collections.sort中使用它来将比较器应用到底层数组。
List<Integer> integersList = Ints.asList(arr);
Collections.sort(integersList, Collections.reverseOrder());
请注意,后者是由实际数组支持的实时列表,所以它应该非常高效。
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);
感谢您的帮助 – android
是它的功课? –
...............编号 – android
我刚刚创建了一个[使用自定义比较器对原始数组进行排序的库](https://github.com/mintern-java/primitive#java-原始)。第一个“样本用法”是按降序对“int []”进行排序。 –