【发布时间】:2012-02-08 14:36:40
【问题描述】:
我正在处理一个非常大的文本文件 (755Mb)。 我需要对这些行(大约 1890000)进行排序,然后将它们写回到另一个文件中。
我已经注意到开始文件与我的非常相似的讨论: Sorting Lines Based on words in them as keys
问题是我无法将行存储在内存中的集合中,因为我得到了 Java 堆空间异常(即使我将其扩展为最大)..(已经尝试过!)
我不能用excel打开它并使用排序功能,因为文件太大,无法完全加载..
我考虑过使用数据库..但我认为编写所有行然后使用 SELECT 查询执行时间太长了..我错了吗?
任何提示表示赞赏 提前致谢
【问题讨论】:
-
嗯,“太长”取决于您的期望。如果你希望在半秒内完成,那确实太长了。如果您不介意等待几秒钟或几分钟,那应该不是问题。试一试,看看时间是否合理。
-
您应该能够使用最新版本的 Java 将文件存储在大约 1 GB 堆的内存中。即
-XX:+UseCompressedStrings
标签: java sorting text-files lines