可能重複:排序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 []」進行排序。 –