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

使用Collections.reverseOrder()对int数组逆序排序报错的问题排查

错误原因及解决办法

核心错误原因

  • Arrays.sort(T[], Comparator<? super T>)是为对象类型数组设计的排序方法,Java泛型不支持基本类型,因此无法将int[](基本类型数组)传入该方法,编译器无法推断出符合要求的泛型参数T。
  • Collections.reverseOrder()返回的是Comparator<Object>类型的比较器,只能用于对象的比较排序,不能直接作用于int这种基本类型。

几种可行的解决方式

  1. 改用Integer对象数组排序
    直接把数组类型换成包装类Integer[],就能兼容带比较器的排序方法:
public void p10(int a, int b, int c){
    Integer[] nums = new Integer[] {a, b, c};
    Arrays.sort(nums, Collections.reverseOrder());
    System.out.println(Arrays.toString(nums));
}
  1. 先升序排序再手动反转数组
    先利用Arrays.sort(int[])对基本类型数组做升序排序,再通过循环反转数组实现逆序:
public void p10(int a, int b, int c){
    int[] nums = new int[] {a, b, c};
    Arrays.sort(nums);
    // 手动反转数组
    for (int i = 0; i < nums.length / 2; i++) {
        int temp = nums[i];
        nums[i] = nums[nums.length - 1 - i];
        nums[nums.length - 1 - i] = temp;
    }
    System.out.println(Arrays.toString(nums));
}
  1. 使用Java流处理(Java 8+)
    通过流将基本类型数组转为包装类流,排序后再转回基本类型数组:
public void p10(int a, int b, int c){
    int[] nums = new int[] {a, b, c};
    int[] reversedSorted = Arrays.stream(nums)
                                 .boxed()
                                 .sorted(Collections.reverseOrder())
                                 .mapToInt(Integer::intValue)
                                 .toArray();
    System.out.println(Arrays.toString(reversedSorted));
}

内容的提问来源于stack exchange,提问作者Amin Mousavi

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.24 16:22:09