关于解析文本操作方法的问题

时间:2011-03-24 08:25:08

标签: java memory string

我需要用Java解析一个长文件并将结果输出到另一个文件。

由于我需要平均几个项目,并且我需要解析文件以找到它们,我需要在内存中存储当前的平均项目,然后将其输出到磁盘上的结果文件。

这种方法是否正常,或者我会在一百万项文件中表现不佳?

更新:这里的要点是每个输出项都可以在计算时随时更新,因为我可能会在开头和结尾平均一个项目。所以我无法释放它,并且我想是在磁盘上写的。

感谢

3 个答案:

答案 0 :(得分:0)

输出是否适合RAM,比如

Map<MyItem, Integer>

(如果您的平均值适合整数)?

如果答案是肯定的,那么最快的解决方案是在源文件遍历期间将其保留在内存中,然后写入输出文件。

如果答案为否,则必须对问题进行分区并创建中间结果并将其存储到磁盘,然后必须合并中间结果以创建最终结果。

如果您必须对问题进行分区,请使用一些数字提出新问题,因为答案实际上取决于上下文......

答案 1 :(得分:0)

查看flatpack它具有LargeDataSet实现,用于处理内存较少的大文件。

答案 2 :(得分:0)

另一个解决方案可能是做2次传递:第一次传递计算(并保持)内存中的变化值,第二次传递创建输出。