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

时间:2015-10-05 13:36:44

标签: 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.ConcurrentModificationException       at java.util.TreeMap $ PrivateEntryIterator.nextEntry(TreeMap.java:1207)       在java.util.TreeMap $ ValueIterator.next(TreeMap.java:1252)

2 个答案:

答案 0 :(得分:1)

TreeMap不支持并发删除。

您应该使用iterator的删除方法

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

答案 1 :(得分:0)

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

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

另请注意,我正在向后迭代行,因此您最终不会删除所有其他行。