java.util.ConcurrentModificationException 异常

wugy111 2014-03-31 08:52:43
最近做个项目,完成数据导入功能,使用apache下的poi解析excel表格,代码如下:
Workbook wb = null;
if (fu == null) {
throw new Exception("文件不能为空!");
}
if (fu.getClientFileName().endsWith(".xlsx")) {
wb = new XSSFWorkbook(fu.getInputStream());
} else {
if (fu.getClientFileName().endsWith(".xls")) {
wb = new HSSFWorkbook(fu.getInputStream());
} else {
throw new Exception("导入文件类型错误,不是excel文件:"
+ fu.getClientFileName());
}
}
List<Map<String, Object>> list = new ArrayList<Map<String, Object>>();
// Sheet sheet = wb.getSheetAt(0);
int sheetNum = wb.getNumberOfSheets();
for (int j = 0; j < sheetNum; j++) {
Sheet sheet = wb.getSheetAt(j);
Iterator<Row> rit = sheet.rowIterator();
if (rit.hasNext()) { // 忽视第一行
rit.next();
}
rowLoop: while (rit.hasNext()) {
Map<String, Object> map = new HashMap<String, Object>();
Row row = rit.next();
for (int i = 0; i < fields.length; i++) {
Cell cell = row.getCell(i);
if (cell != null) {
cell.setCellType(Cell.CELL_TYPE_STRING);
String val = cell.getStringCellValue();
if (val != null) {
map.put(fields[i].name, val.trim());
}
} else {
// 第一列为空,则忽视该行
if (i == 0) {
continue rowLoop;
}
}
}
list.add(map);
}
后台抛出异常:java.util.ConcurrentModificationException
哪位遇到过这种情况,麻烦帮忙修改下上面代码,感谢!
...全文
297 3 打赏 收藏 转发到动态 举报
写回复
用AI写文章
3 条回复
切换为时间正序
请发表友善的回复…
发表回复
menglanxiang 2014-04-07
  • 打赏
  • 举报
回复
第一点 尽量避免使用标记语句:rowLoop,第二点在循环时改变了类集的值。
Defonds 2014-03-31
  • 打赏
  • 举报
回复
应该是逻辑有问题 比如遍历某个对象时,该对象已被删除了
浪里花 2014-03-31
  • 打赏
  • 举报
回复
没用过解析excel,不过这个问题比较简单的,你在集合类中可能对集合做了删除或增加的事情java.util.ConcurrentModificationException这个一般就是上述原因

81,091

社区成员

发帖
与我相关
我的任务
社区描述
Java Web 开发
社区管理员
  • Web 开发社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧