加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 编程开发 > Java > 正文

在Java中,有没有办法随机化一个太大的文件以适应内存?

发布时间:2020-12-14 05:56:57 所属栏目:Java 来源:网络整理
导读:我想要做的是将行重新排列(从CSV读取),然后将第一个随机化的10,000行打印到一个csv,将剩余的行打印到单独的csv.使用较小的文件,我可以做类似的事情 java.util.Collections.shuffle(...)for (int i=0; i 10000; i++) printcsv(...)for (int i=10000; i data.l
我想要做的是将行重新排列(从CSV读取),然后将第一个随机化的10,000行打印到一个csv,将剩余的行打印到单独的csv.使用较小的文件,我可以做类似的事情
java.util.Collections.shuffle(...)
for (int i=0; i < 10000; i++) printcsv(...)
for (int i=10000; i < data.length; i++) printcsv(...)

但是对于非常大的文件,我现在得到OutOfMemoryError

解决方法

这是一种可能的算法:

>设MAX_LINES为可管理文件中的最大行数;>从输入文件中读取MAX_LINES,用原始算法随机化它们并将它们写入临时文件;>重复2.直到输入文件中没有任何行;>设N是0和你写的临时文件数之间的随机数;从第N个临时文件中读取下一行;>重复4.直到你读完所有文件中的所有行;前10000行将每一行写入第一个输出文件,将所有其他行写入另一个文件.

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读