【发布时间】:2024-05-16 14:50:01
【问题描述】:
我来找你是因为我在读取 csv 和使用 Jackson 创建地图时遇到问题。为了读取文件并将其关联到地图,我使用以下代码:
private static <T, R extends IndexedData<T>> List<R> readFile(File csvFile, Class<R> cls) throws Exception {
CsvMapper csvMapper = new CsvMapper();
CsvSchema csvSchema = csvMapper.typedSchemaFor(cls).withHeader().withStrictHeaders(true);
List list = csvMapper.readerFor(cls)
.with(csvSchema.withColumnSeparator(';'))
.with(CsvParser.Feature.SKIP_EMPTY_LINES)
.readValues(csvFile)
.readAll();
return list;
}
但是如何根据属性的值过滤数据?
例如,我在一列中有一个 ID,只有当该值等于“038”时,我才想在地图中读取并存储该行
使用的代码读取整个文件并创建一个包含所有值的 HashMap,但我想只将某些具有定义条件的值添加到映射中。 知道文件有相当大的体积,我无法读取所有的值,稍后过滤Map。
欢迎任何帮助:)
亲切
【问题讨论】:
-
您不必阅读所有文件以确保最后一行不符合您想要的条件吗?
-
当阅读是,但我只想在我的 HashMap 中添加符合条件的值,否则我有一个饱和的内存问题
-
我在你的代码中没有看到 HashMap。