java – 如何排序非常大的文件

我有一些文件应该按照每行开始处的id进行排序。
这些文件大约是2-3 GB。我试图将所有数据读入ArrayList并对它们进行排序。但记忆力还不足以让它们全部存在。这是行不通的。

线条看起来像
0052304 0000004000000000000000000000000000000041约翰·泰迪000023
0022024 0000004000000000000000000000000000000041乔治·克兰00013

我如何排序文件?

这不是一个Java问题。您需要研究一种有效的算法来排序未完全读入内存的数据。对Merge-Sort的一些修改可以实现这一点。

看看这个:
http://en.wikipedia.org/wiki/Merge_sort

和:
http://en.wikipedia.org/wiki/External_sorting

基本上,这里的想法是将文件分解成更小的部分,对它们进行排序(使用合并排序或其他方法),然后使用merge-sort中的合并来创建新的排序文件。

http://stackoverflow.com/questions/7918060/how-do-i-sort-very-large-files

本站文章除注明转载外,均为本站原创或编译
转载请明显位置注明出处:java – 如何排序非常大的文件