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

前端之家收集整理的这篇文章主要介绍了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中(不需要任何安装或设置).

猜你在找的Java相关文章