java - 使用 sheet 循环遍历工作表对象有什么区别。Iterator() 和 foreach 循环?
问题描述
**EDITED**
我最近在工作场所的项目中遇到了一件奇怪的事情。我正在编写一段代码,该代码旨在读取多个 xlsx 文件,然后通过过滤数据来编写多个 xlsx 文件。但是,有一天,当我增加输入数据时,它开始抛出 Out of memory 错误。堆栈跟踪将我指向 for 循环的行号。当我将 foreach 更改为 sheet 时。迭代器,它起作用了。我只是想知道错误是如何解决的?PS:我没有在 foreach 中修改我的工作表记录。
Sheet sheet = workbook.getSheetAt(0);
Iterator<Row> rit = sheet.iterator();
//for (Row row : sheet) //<-- for each was throwing OOM
while(rit.hasNext())
{
Row row=rit.next();
if(String.valueOf(row.getCell(0).getStringCellValue()).equals("Pers.No."))
listOfRecordsForHeader.add(row);
if(row.getCell(0).getStringCellValue().equals(personnelNumber) && !isEmptyRow(row)) {
listOfRecords.add(row);
}
}
解决方案
推荐阅读
- angular - 基于条件的动态验证
- java - 运行 java 时,Gradle 任务运行以非零退出值 100 完成
- shell - 如何自动化终端输入/命令?
- java - 强制统一构造函数和方法注释值?
- qt - 将 .mbtiles 转换为 .png 图像
- android - Godot 3.2 不会在编辑器设置中接受我的自定义构建 Sdk 路径
- javers - JaVers - 通过复合键检索审计更改
- google-bigquery - 为什么 BigQuery BI 引擎不使用所有预留?
- asp.net-mvc - 当我尝试在可能的主视图中渲染部分视图时遇到问题
- javascript - 切换不会保持打开状态