帮我写一个用easyexcel组件导入百万数据的代码,并去重
时间: 2023-06-04 15:02:15 浏览: 99
好的,我会为您提供一个用easyexcel组件导入百万数据的代码,并去重:
```java
public static void readExcelData(String filePath) {
Set<String> data = new HashSet<>();
try {
FileInputStream inputStream = new FileInputStream(filePath);
ExcelReader excelReader = new ExcelReaderBuilder(inputStream, null, new CustomExcelListener(data))
.headRowNumber(1)
.build();
List<Object> readAll = excelReader.readAll();
excelReader.finish();
} catch (Exception e) {
e.printStackTrace();
}
}
private static class CustomExcelListener extends AnalysisEventListener<Object> {
private Set<String> data;
public CustomExcelListener(Set<String> data) {
this.data = data;
}
@Override
public void invokeHeadMap(Map<Integer, String> headMap, AnalysisContext context) {
// 当读取到表头的时候,不进行操作
}
@Override
public void invoke(Object obj, AnalysisContext context) {
String value = obj.toString();
if (!data.contains(value)) {
// 去重操作
data.add(value);
// 将具体操作交给业务层去处理
// TODO: do something
}
}
@Override
public void doAfterAllAnalysed(AnalysisContext context) {
}
}
```
需要注意的是,由于读取的数据可能很多,如果不进行去重操作,可能会引起内存溢出。因此,在读取到数据之后,我们可以先将数据存储到一个Set中进行去重,然后再进行具体的业务处理。
阅读全文