为了账号安全,请及时绑定邮箱和手机立即绑定

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

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

白猪掌柜的 2022-01-06 19:49:41
我正在尝试使用流获取 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);


查看完整回答
反对 回复 2022-01-06
  • 1 回答
  • 0 关注
  • 96 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信