在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行将每一行写入第一个输出文件,将所有其他行写入另一个文件. (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |