我正在尝试使用流获取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"));
答案 0 :(得分:8)
使用无限流,并在独特操作后 对其进行限制。
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);