【发布时间】:2018-08-13 15:52:51
【问题描述】:
我有 csv 文件 (600 MB) 和 2000 万行。 我需要读取所有这些数据,从中创建 java 对象列表,并计算对象字段的一些指标,例如平均值、中位数、最大值、总和和其他统计信息。在 Java 中最好的方法是什么? 我尝试了简单的 .forEach 循环,它需要一段时间(20 分钟)来迭代它。
更新: 我使用 BufferReader 读取数据并将 csv 文件转换为一些 Java 类的对象列表。它非常快。 它在 forEach 循环中停留了 20 分钟,我尝试遍历这 2000 万个对象列表并将它们分成 3 个列表,具体取决于当前对象中的值。 所以基本上,我遍历整个列表一次,我有 if/else 条件,我检查对象中的某些字段是否等于“X”,“Y”或“Z”,并根据答案,分开将这 2000 万条记录分成 3 个列表。
然后,对于这 3 个列表,我需要计算不同的统计数据:例如中位数、平均值、总和等
【问题讨论】:
-
可以拆分文件,使用多线程
-
如果你不愿意展示你迄今为止所尝试的东西,那就没什么好说的了。
-
或者你应该尝试spring-batch,根据你的要求。
-
您所描述的一切都不应超过 30 秒。我们需要更多信息。