我正在尝试使用流获取 8 个随机整数,但下面代码的问题是 distinct() 删除了重复项,如果有任何重复项,则不会给我 8 个整数。目标: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"));
1 回答
慕森王
TA贡献1777条经验 获得超3个赞
使用无限流并在不同的操作后限制它。
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);
添加回答
举报
0/150
提交
取消