我有一个包含 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
}
做这个的最好方式是什么?