如何处理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
相关产品推荐
相关产品推荐

