java.util.ConcurrentModificationException当从java中删除行从Excel

for(Row row:sheet) { for(int rowNo=0;rowNo<sheet.getLastRowNum();rowNo++) { row=sheet.getRow(rowNo); sheet.removeRow(row); } } 

我想通过Java从Excel文件中删除行,但它给我错误

java.util.TreeMap中的java.util.ConcurrentModificationException $ java.util.TreeMap中的$ PrivateEntryIterator.nextEntry(TreeMap.java:1207)$ ValueIterator.next(TreeMap.java:1252)

TreeMap不支持并发删除。

你应该使用iterator的remove方法

 Iterator<Row> it = sheet.iterator(); while(it.hasNext()) { Row row = it.next(); ... it.remove(); } 

您似乎没有使用外部for循环中的row ,因此您可以将其删除:

 for(int rowNo=sheet.getLastRowNum()-1; rowNo >= 0;rowNo--) { row=sheet.getRow(rowNo); sheet.removeRow(row); } 

还要注意,我正在向后迭代行,所以最终不会只移除其他行。