Java 8:使用Random.LongStream()随机选择List

Java 8: Random selection of List using Random.LongStream()

如果你给它一个Random.IntStream(),有没有办法从流中随机选择项目(无重复)?

谢谢

假设你有一个包含 1000 个 Foo 对象的数组列表,你需要从这个列表中随机选择 10 个元素,可以使用 Random.ints(int origin, int bound) 来获得“无限”的随机流列表中的索引,然后通过索引选择需要的元素:

List<Foo> largeFooList = List.of(...); // 1000+ Foo objects

List<Foo> lucky10 = new Random() // or ThreadLocalRandom.current()
    .ints(0, largeFooList.size())
    .distinct() // ensure all the ids are different
    .limit(10)
    .mapToObj(largeFooList::get)
    .collect(Collectors.toList());