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());
如果你给它一个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());