所以我创建了一个 IntStream,我给它一个 1 - 9 的范围。我希望能够使用 map 函数获取给定范围 (1-9) 中的每个元素并随机化每个元素。
本质上,我想在每次程序运行时以不同的顺序流式传输数字 1 - 9。 (我对其他想法持开放态度,但它必须使用流)。
我听说过使用 Java 的 Random 类,但我不确定如何在每个元素的映射上实现它。
我试过这样做但是有错误:
IntStream.range(1, 9).map(x -> x = new Random()).forEach(x -> System.out.println(x));
如有任何帮助,我们将不胜感激。
最佳答案
也可以使用 Random.ints
以这种方式完成:
new Random().ints(1,10)
.distinct()
.limit(9)
.forEach(System.out::println);
输出:
9 8 4 2 6 3 5 7 1
编辑
如果您需要一个包含这些值的Stream
,那么请执行以下操作:
Stream<Integer> randomInts = new Random().ints(1, 10)
.distinct()
.limit(9)
.boxed();
如果您需要一个包含值的List
,那么这样做:
List<Integer> randomInts = new Random().ints(1, 10)
.distinct()
.limit(9)
.boxed()
.collect(Collectors.toList());
关于Java - 创建具有给定范围的 IntStream,然后使用映射函数随机化每个元素,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48192913/