微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

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中(不需要任何安装或设置).

原文地址:https://www.jb51.cc/java/126676.html

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。

相关推荐