You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

为何Arrays.sort(arr, Collections.reverseOrder())反转char数组会失败?

问题原因分析
  • Java 的 Arrays.sort 方法针对不同类型的数组有不同的重载规则:
    • 对于 char、int、double 这类基本数据类型的数组,Arrays.sort 仅提供默认升序的无参排序方法,没有支持传入自定义比较器 Comparator 的重载。
    • 对于 String 等所有引用数据类型的数组,Arrays.sort 提供了可传入自定义比较器的重载方法 sort(T[] a, Comparator<? super T> c),可以实现包括倒序在内的自定义排序逻辑。
  • 出现报错的核心原因是泛型限制:Collections.reverseOrder() 返回的是泛型 Comparator 实例,而 Java 泛型不支持基本类型作为类型参数,因此基本类型数组无法匹配带比较器参数的 sort 重载,调用时就会直接报错。

补充实现方案

如果需要对 char 数组实现倒序排序,可以先调用无参 sort 完成升序排序,再手动反转数组即可,示例代码如下:

public static void main(String[] args) {
    char[] arr = new char[]{'a','b','c'};
    // 先升序排序
    Arrays.sort(arr);
    // 手动反转得到倒序结果
    for (int i = 0; i < arr.length / 2; i++) {
        char temp = arr[i];
        arr[i] = arr[arr.length - 1 - i];
        arr[arr.length - 1 - i] = temp;
    }
}

内容的提问来源于stack exchange,提问作者Jonathan Su

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.09.26 21:36:03