3000 万のユーザー ID を持つ大きなファイルがあります。その大きなファイルは次のようになり、各行にはユーザー ID が含まれます。
149905320
1165665384
66969324
886633368
1145241312
286585320
1008665352
1135545396
186217320
132577356
今、私はその大きなテキスト ファイルからランダムな行を取得することを計画しています。その大きなテキスト ファイルに含まれるユーザー ID の総数を知っています。その大きなテキスト ファイルからランダムな要素を選択する最良の方法が何であるかはわかりません。これらの 3000 万のユーザー ID をすべてセットに格納し、hastset から要素をランダムに選択することを考えていましたが、このアプローチではメモリ不足エラーが発生します。
そのため、大きなテキスト ファイルから要素をランダムに選択しようとしています。
final String id = generateRandomUserId(random);
/**
* Select random elements from the a big text file
*
* @param userIdsSet2
* @param r
* @return
*/
private String generateRandomUserId(Random r) {
File bigFile = new File("C:\\bigfile.txt");
//randomly select elements from a big text file
}
これを行う最良の方法は何ですか?