Java数组从大到小排序
在Java中,有几种方法可以对数组进行从大到小(降序)排序,以下是几种常见的实现方式:

使用Arrays.sort() + 逆序
import java.util.Arrays;
import java.util.Collections;
public class ArraySortDescending {
public static void main(String[] args) {
// 对于基本类型数组
int[] numbers = {5, 2, 8, 1, 9};
Arrays.sort(numbers); // 先升序排序
// 然后反转数组
for (int i = 0; i < numbers.length / 2; i++) {
int temp = numbers[i];
numbers[i] = numbers[numbers.length - 1 - i];
numbers[numbers.length - 1 - i] = temp;
}
System.out.println("降序排序: " + Arrays.toString(numbers));
// 对于对象数组(如Integer)
Integer[] numbersObj = {5, 2, 8, 1, 9};
Arrays.sort(numbersObj, Collections.reverseOrder());
System.out.println("降序排序(对象数组): " + Arrays.toString(numbersObj));
}
}
使用自定义比较器
import java.util.Arrays;
import java.util.Comparator;
public class ArraySortDescending {
public static void main(String[] args) {
Integer[] numbers = {5, 2, 8, 1, 9};
// 使用lambda表达式作为比较器
Arrays.sort(numbers, (a, b) -> b.compareTo(a));
System.out.println("降序排序: " + Arrays.toString(numbers));
}
}
使用第三方库(如Guava)
import com.google.common.primitives.Ints;
import java.util.Arrays;
public class ArraySortDescending {
public static void main(String[] args) {
int[] numbers = {5, 2, 8, 1, 9};
numbers = Ints.toArray(Ints.asList(numbers).reverse());
System.out.println("降序排序: " + Arrays.toString(numbers));
}
}
手动实现排序算法(如冒泡排序)
import java.util.Arrays;
public class ArraySortDescending {
public static void main(String[] args) {
int[] numbers = {5, 2, 8, 1, 9};
// 冒泡排序(降序)
for (int i = 0; i < numbers.length - 1; i++) {
for (int j = 0; j < numbers.length - 1 - i; j++) {
if (numbers[j] < numbers[j + 1]) {
int temp = numbers[j];
numbers[j] = numbers[j + 1];
numbers[j + 1] = temp;
}
}
}
System.out.println("降序排序: " + Arrays.toString(numbers));
}
}
注意事项
- 对于基本类型数组(如int[]),不能直接使用
Collections.reverseOrder(),因为它只能用于对象数组 - 对于对象数组,需要确保元素类型实现了
Comparable接口,或者提供自定义的Comparator - 对于大型数组,建议使用
Arrays.sort()而不是手动实现的排序算法,因为它更高效
选择哪种方法取决于你的具体需求和数组类型,对于大多数情况,使用Arrays.sort()配合Collections.reverseOrder()(对于对象数组)是最简洁高效的方法。

