New*_*Pea 3 java random lambda java-stream
我试图使用流获得8个随机int,但下面的代码的问题是distinct()删除重复,如果有任何重复,将不会给我8 int.
目标:
1.获取8随机int(无重复)
2.添加到列表
3.排序前7个int.
我知道Collections.sort(winlist.subList(0,6)); 适用于排序,但我试图看看它是否可以只用流完成.
new Random()
.ints (8, 0, 64)
.distinct()
.sorted()
.forEach (Integer -> System.out.print (Integer + "\n"));
Run Code Online (Sandbox Code Playgroud)
使用循环流并在不同操作后限制它.
new Random().ints(0, 64).distinct().limit(8).sorted().forEach(System.out::println);
Run Code Online (Sandbox Code Playgroud)
这将按排序顺序打印范围[0,64]中的8个随机整数.
要仅对前7个数字进行排序,使用具有7个数字的流并更传统地生成第8个数字会更容易.但是,如果您真的想要一个包含所有8个数字的流,则可以通过连接两个流来创建一个流.
IntStream.concat(
new Random().ints(0, 64).distinct().limit(7).sorted(),
new Random().ints(0, 64)
).distinct().limit(8).forEach(System.out::println);
Run Code Online (Sandbox Code Playgroud)