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

面向初学者的IndexOutOfBoundsException问题:操作Engineer类ArrayList抛异常

错误原因

你传入方法的是刚初始化的空ArrayList,此时集合的size()为0,不存在索引为0的元素,直接调用aa.get(0)会直接触发IndexOutOfBoundsException。你原有的逻辑只覆盖了「索引0位置元素为null」的场景,没有考虑列表长度不足、根本不存在该索引的情况。

修复方案

调整判断逻辑,先校验列表长度是否满足取索引0的条件,同时建议给方法参数加上泛型约束,避免类型安全问题,修复后代码如下:

ArrayList<Engineer>  newEmptyEngineerList = new ArrayList<>();
findLastEngineer(newEmptyEngineerList);

// 增加泛型声明,匹配存储Engineer类型的列表,提升类型安全性
public static void findLastEngineer(ArrayList<Engineer> aa){
    // 先判断列表长度是否大于0,再判断索引0的元素是否非空
    if (aa.size() > 0 && aa.get(0)!=null){
        System.out.println(aa.get(0));
    }
    else {
        Engineer eng = new Engineer();           
        aa.add(0,eng);
        System.out.println(aa.get(0));
    }
}
修复说明
  • 新增aa.size() > 0前置判断,只有列表存在索引0元素时才会执行取值操作,完全规避索引越界问题
  • 空列表状态下执行add(0, eng)是合法操作,不会触发异常,可以正常将新建的Engineer对象插入到索引0位置

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.24 19:45:10