gpt4 book ai didi

java - 在 java 中对巨大的 file.txt 的行进行排序

转载 作者:塔克拉玛干 更新时间:2023-11-03 04:06:20 24 4
gpt4 key购买 nike

我正在处理一个非常大的文本文件 (755Mb)。我需要对行(大约 1890000)进行排序,然后将它们写回另一个文件。

我已经注意到讨论的起始文件与我的非常相似: Sorting Lines Based on words in them as keys

问题是我无法将这些行存储在内存中的集合中,因为我得到了 Java 堆空间异常(即使我最大程度地扩展了它)..(已经尝试过!)

我既不能用excel打开,也不能使用排序功能,因为文件太大,无法完全加载..

我考虑过使用 DB ..但我认为编写所有行然后使用 SELECT 查询就执行时间而言太长了..我错了吗?

任何提示表示赞赏提前致谢

最佳答案

我认为这里的解决方案是使用临时文件进行合并排序:

  1. 读取第一个文件的前 n 行,(n 是您可以在内存中存储和排序的行数),对它们进行排序,并将它们写入文件 1.tmp(或者您如何调用它)。对接下来的 n 行执行相同操作并将其存储在 2.tmp 中。重复直到处理完原始文件的所有行。

  2. 读取每个临时文件的第一行。确定最小的(根据你的排序顺序),写入目标文件,从对应的临时文件中读取下一行。重复直到处理完所有行。

  3. 删除所有临时文件。

这适用于任意大文件,只要您有足够的磁盘空间。

关于java - 在 java 中对巨大的 file.txt 的行进行排序,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8832822/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com