首页 > 解决方案 > 使用 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);
            }

    }

标签: javaforeachiteratorout-of-memoryxlsx

解决方案


推荐阅读