使用流的随机无重复和有关排序 Java 的问题

我正在尝试使用流获取 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"));


白猪掌柜的
浏览 97回答 1
1回答

慕森王

使用无限流并在不同的操作后限制它。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);
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

Java