老大让我把一个1G的记事本文件排序。。知道的教教
如题。。谢谢了。。具体点最好··· --------------------编程问答-------------------- 什么意思??? --------------------编程问答-------------------- 这个1G的文件是有一定顺序给写进去的吧。。我以前处理过百来兆的,方法是把这些数据用文件流给读出来,然后每条做成一个数据库记录,然后插到数据库里面,用sql的排序,然后再从结果集里面导出来,要是还存成文件,那就再写回去,不存文件,那就按照别的办法处理。
一次性加载全部的文件,或许JVM内存会吃不消的,你可以部分部分的去加载。具体这个方法,你可以去百度一下。
--------------------编程问答--------------------
不错的办法,最后合并一个文件时,可以用io中的SequenceInputStream类 --------------------编程问答-------------------- 分而治之的思想 --------------------编程问答--------------------
+1 --------------------编程问答-------------------- 都是高手,学习了。
恭喜楼主,祝楼主好运 --------------------编程问答--------------------
这个是最简单快捷的方法 --------------------编程问答-------------------- 顶一个。 --------------------编程问答-------------------- 楼主要写出文件的具体内容结构。
超大文件的排序,算法上面,可以参考数据结构中,外部排序,的相关内容。
当然,先拆分,后组合,也是个不错的方案。
如果,不要求速度的话,解析文件,插入数据,排序,生成排序问。
是个和好的方案。
我的方案,是,先拆分,后组合。
估算时间:硬盘读写速度,按 60MB/s的读取速度,40MB/s的写入速度。
那么,读取1G文件,大概需要17s,而写入大概要25s时间.
先读取文件的部分数据到内存当中,排序,并生成临时文件。
这样,1G文件,就会被拆分成多个分别排序的小文件。
然后,取其中两个小文件,合并成一个大点的排序文件,如此反复,最终生成1G的大排序文件。
补充:Java , Java SE