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

for循环中嵌套ArrayList元素长度为1 调用get(1)索引越界问题求解

嵌套ArrayList查找索引报错问题排查与修复

报错直接原因

错误提示索引1超出长度为1的容器边界说明:cityArray中存在长度为1的内层List<String>元素,代码未做校验直接调用get(1)访问下标为1的元素,触发数组越界异常。
同时原有代码还存在一个隐藏问题:Java中==用于字符串比较时判断的是对象内存地址,而非字符串内容,即使没有越界也大概率无法正确匹配目标值。

兼容异常场景的修正代码

public int findCity(String city) {
  city = "\"" + city + "\"";
  // 外层集合判空
  if (cityArray == null || cityArray.isEmpty()) {
    return -1;
  }
  // 用普通for遍历可直接返回当前索引,无需额外调用indexOf,效率更高
  for (int i = 0; i < cityArray.size(); i++) {
    List<String> innerList = cityArray.get(i);
    // 内层List判空+长度校验,避免越界
    if (innerList == null || innerList.size() < 2) {
      // 此处可添加日志打印异常的内层List内容,方便排查脏数据来源
      continue;
    }
    String currentCity = innerList.get(1);
    // 字符串比较使用equals方法
    if (city.equals(currentCity)) {
      return i;
    }
  }
  return -1;
}

CSV读取问题修复方案

你定位到的nextLine()读取csv时遇到空格生成新array的问题,可通过以下方式修复:

  • 若使用Scanner读取文件,可调用useDelimiter("\n")方法指定仅以换行符作为行分隔符,避免空格被识别为分隔符拆分出异常短数组
  • 更推荐使用专业CSV解析工具处理文件,可自动处理分隔符、转义字符、特殊字符等场景,减少自行解析的异常概率

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.27 10:45:05