java - Random without duplicate using stream和关于sort Java的问题

标签 java random lambda java-stream

目标:

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/

相关文章:

java - 作为随机类种子的最佳数字

java - 选择具有特定范围的唯一随机数

c# - FK 上的 Linq 值不能为空

python - 使用 lambda 通过更改/修改旧列表来创建新列表

ios - Arc4随机 float ?

c# - Func<> 有 2 个输出值

java - 如何将另一个类中的方法转换为泛型类中的方法

java - Mongodb 多态性 Java 对象无法确定具体类

java - 我应该在 Windows 上将应用程序缓存存储在哪里?

c++ - 如何从 vector 中删除随机元素而不重复它们并保留元素顺序? C++