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

Java中Lambda表达式排序报错求助:基于拼接结果排序失败

问题原因及解决办法

核心问题

你用int[]这种基本类型数组调用Arrays.sort时,该方法没有接受Comparator(也就是你写的Lambda表达式)的重载版本。Arrays.sort只有针对对象数组(比如Integer[])的重载才支持自定义比较逻辑,基本类型数组的sort方法只能用默认的数值排序规则。

修正方案

把数组转换成Integer[]包装类数组,用自定义Comparator完成排序后,再转回int[]即可。

修正后的代码

import java.util.Arrays;

class Solution {
    public int[] sort(int[] nums) {
        // 将int[]转为Integer[]包装类数组
        Integer[] arr = Arrays.stream(nums).boxed().toArray(Integer[]::new);
        
        // 按拼接字符串的规则排序
        Arrays.sort(arr, (a, b) -> (a + "" + b).compareTo(b + "" + a));
        
        // 将排序后的Integer[]转回int[]
        return Arrays.stream(arr).mapToInt(Integer::intValue).toArray();
    }
}

补充说明

如果只是测试固定数组{1,2,3,4,5},也可以直接初始化Integer[] arr = {1,2,3,4,5};跳过流转换步骤,但上面的代码适配传入的nums参数,通用性更强。

内容的提问来源于stack exchange,提问作者Mohammad Basheer

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.18 13:42:04