目标:
1.得到8个随机整数(无重复)
2.添加到列表
3.对前 7 个整数进行排序。
我知道 Collections.sort(winlist.subList(0, 6));适用于排序,但我想看看是否可以只用流来完成。
new Random()
.ints (8, 0, 64)
.distinct()
.sorted()
.forEach (Integer -> System.out.print (Integer + "\n"));
最佳答案
在 distinct 操作之后使用无限流并限制它。
new Random().ints(0, 64).distinct().limit(8).sorted().forEach(System.out::println);
这将按排序顺序打印 [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);
关于java - Random without duplicate using stream和关于sort Java的问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53188966/