业务需求,从一份excel表中取到X轴(项目)和Y轴(平台)的数据,和数据库中的数据进行比较,如果匹配不上,则把所有匹配不上的信息返回前端,当时采取的是
List<ProjectVo> shareProjects = projectMapper.selectAllShareProject();
List<ProjectVo> sharePlats = projectMapper.selectAllSharePlat();
for (int i = 0; i < header.getLastCellNum(); i++) {
Cell cell = header.getCell(i);
String projectName = cell.getStringCellValue();
for (ProjectVo shareProject : shareProjects) {
List<String> nameList = ExcelHelper.buildProjectUsedNames(shareProject);
String pureProjectName = ExcelHelper.trimSpaceAndSpecialSymbol(projectName);
if (nameList.contains(pureProjectName)) {
columnMap.put(columnId, shareProject.getId());
break;
}
}
}
这样只能判断excel中的现有数据是否和数据库匹配,无法判断数据库的数据是否全部存在excel表中,并且我觉得每次遍历一个完整的Collection让我觉得浪费性能。于是改成了如下
List<ProjectVo> shareProjects = projectMapper.selectAllShareProject();
Iterator<ProjectVo> shareProjectIterator = shareProjects.iterator();
List<ProjectVo> sharePlats = projectMapper.selectAllSharePlat();
Iterator<ProjectVo> sharePlatIterator = sharePlats.iterator();
String projectName = cell.getStringCellValue();
String pureProjectName = ExcelHelper.trimSpaceAndSpecialSymbol(projectName);
while (shareProjectIterator.hasNext()) {
ProjectVo item = shareProjectIterator.next();
List<String> nameList = ExcelHelper.buildProjectUsedNames(item);
if (nameList.contains(pureProjectName)) {
columnMap.put(columnId, item.getId());
shareProjectIterator.remove();
break;
}
}
String platName