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

ArrayList调用subList报错,递归求和代码出现双错误求助

问题排查与修复

错误1:无法将List转换为ArrayList

list.subList()方法返回的是List<Integer>类型的视图,并非ArrayList实例,直接赋值给ArrayList<Integer>类型变量会触发类型不兼容错误。

修复方案二选一:

  • 将rest的类型改为List<Integer>,让代码适配更通用的List接口
  • 若必须使用ArrayList,通过构造方法转换结果:ArrayList<Integer> rest = new ArrayList<>(list.subList(1, list.size()))

错误2:Main类中未定义sumList方法

你的方法名称是sum,但递归调用时写错成了sumList(rest),属于方法名拼写错误,应该调用自身方法sum(rest)。

修正后的代码

public static int sum(ArrayList<Integer> list){
    if (list.isEmpty()){
        return 0;
    }
    int first = list.get(0);
    // 方案1:用List类型接收subList结果
    List<Integer> rest = list.subList(1, list.size());
    // 方案2:转换为ArrayList(若有必要)
    // ArrayList<Integer> rest = new ArrayList<>(list.subList(1, list.size()));
    return first + sum(rest);
}

更推荐的优化写法:将方法参数改为List<Integer>,让方法兼容所有List实现类,扩展性更强:

public static int sum(List<Integer> list){
    if (list.isEmpty()){
        return 0;
    }
    int first = list.get(0);
    List<Integer> rest = list.subList(1, list.size());
    return first + sum(rest);
}

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.31 16:26:26