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

Java排序自定义Pair类时出现compareTo找不到符号错误如何解决

错误根因
  • 泛型类型擦除:声明Comparator时使用了无泛型参数的原生Pair类型,编译器会将所有泛型返回值视为Object类型,Object类未实现compareTo方法,因此触发方法找不到的编译错误。
  • 排序API误用:Arrays.sort()仅支持数组排序,pairList是List集合类型,需要使用适配集合的排序API。
  • 排序字段不匹配:需求为按第四个元素(对应Pair类的s字段)排序,当前代码错误选取了第一个字段l作为排序依据。
修复代码

写法1(兼容Java 8之前版本)

// 改用Collections.sort对List排序,Comparator指定完整泛型参数
Collections.sort(pairList, new Comparator<Pair<String, Integer, Integer, Integer>>() {
    @Override
    public int compare(Pair<String, Integer, Integer, Integer> p1, Pair<String, Integer, Integer, Integer> p2) {
        // 调用getS获取第四个元素比较,Integer已经实现了compareTo方法
        return p1.getS().compareTo(p2.getS());
    }
});

写法2(Java 8+ lambda简化写法)

pairList.sort(Comparator.comparing(Pair::getS));

排序后直接遍历pairList即可得到你预期的升序结果。


内容的提问来源于stack exchange,提问作者Ankita Jain

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.07 05:45:03