java – 将20 GB输入文件解析为ArrayList

我需要按升序对20 GB文件(由随机数组成)进行排序,但我不明白应该使用哪种技术.我试图在我的 Java程序中使用ArrayList,但它耗尽了内存.增加堆大小也不起作用,我猜20 GB太大了.任何人都可以指导我,我该怎么办?

解决方法

您应使用外部排序算法,不要试图将其放入内存中.

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

如果您认为它太复杂,请尝试以下方法

>在项目中包含H2数据库
>创建一个新的磁盘数据库(将在第一次连接时自动创建)
>创建一个简单的表格,用于存储数字
>逐个数字读取数据并将其插入数据库(不要忘记提交每1000个数字左右)
>使用ORDER BY子句选择数字:)
>使用JDBC resultSet即时获取结果并将其写入输出文件

H2数据库很简单,可以很好地与Java配合使用,可以嵌入到JAR中(不需要任何安装或设置).

相关文章

最近看了一下学习资料,感觉进制转换其实还是挺有意思的,尤...
/*HashSet 基本操作 * --set:元素是无序的,存入和取出顺序不...
/*list 基本操作 * * List a=new List(); * 增 * a.add(inde...
/* * 内部类 * */ 1 class OutClass{ 2 //定义外部类的成员变...
集合的操作Iterator、Collection、Set和HashSet关系Iterator...
接口中常量的修饰关键字:public,static,final(常量)函数...