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

如何处理Java数组插入元素大小动态变化问题 避免越界空指针异常

解决方案

核心思路是用可自动扩容的ArrayList<String>替代固定长度数组,同时优化重复的循环逻辑,自动适配实际抓取到的元素数量,不需要手动修改任何参数。

改造后的完整代码

import java.util.ArrayList;
import java.util.Collections;

// 原有其他业务代码保持不变
if(val.equals("Recommended for you")) {
    js.executeScript("window.scrollBy(0,800)");
} else if(val.equals("Trending deals")) {
    js.executeScript("window.scrollBy(0,1500)");
}
// 替换固定长度数组为ArrayList,无需提前指定容量
ArrayList<String> titleList = new ArrayList<>();
int totalElement = allelements.size();
// 优化重复循环:保留原每7个元素点击一次的逻辑,自动适配实际元素数量
try {
    for (int group = 0; ; group++) {
        int startIdx = group * 7;
        int endIdx = startIdx + 6;
        // 已遍历完所有元素直接跳出
        if (startIdx >= totalElement) break;
        // 取当前组元素,不足7个则取到最后一个
        for (int i = startIdx; i <= Math.min(endIdx, totalElement - 1); i++) {
            titleList.add(allelements.get(i).getAttribute("title"));
        }
        // 所有元素读取完成无需再点击翻页
        if (endIdx >= totalElement - 1) break;
        s.get(0).click();
    }
} catch (Exception e) {
    e.printStackTrace();
}
// 排序逻辑
Collections.sort(titleList);
// 批量打印结果
for (String title : titleList) {
    System.out.println(title);
}

方案说明

  • 无需手动指定存储容量,ArrayList会根据实际插入的元素自动扩容,从根源避免数组越界、空指针异常
  • 消除了重复的循环代码,后续调整每组元素数量仅需修改一处参数即可
  • 自动根据抓取到的元素总数量终止流程,适配任意大小的元素返回结果

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

相关产品推荐
方舟 Agent Plan

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

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