) in the type Stream is not applicable for the arguments (int)"与 List = Stream.generate()-6ren"> ) in the type Stream is not applicable for the arguments (int)"与 List = Stream.generate()-我正在尝试生成如下所示的随机整数列表: private static int nextElement() { Random r = new Random(); return r.nex-6ren">
gpt4 book ai didi

java - "The method generate(Supplier) in the type Stream is not applicable for the arguments (int)"与 List = Stream.generate()

转载 作者:行者123 更新时间:2023-12-04 21:27:45 25 4
gpt4 key购买 nike

我正在尝试生成如下所示的随机整数列表:

private static int nextElement() {
Random r = new Random();
return r.nextInt(100);
}

public static void main(String[] args) {
Integer[] integers = Stream.generate(nextElement())
.limit(200)
.toArray(Integer[]::new);
}

错误显示为 generate 下的红色波浪线,说明如下:

The method generate(Supplier<? extends T>) in the type Stream is not 
applicable for the arguments (int)

我认为这意味着 nextElement()return 类型不能是 int,但我可能错了。我该如何修复这段代码,以便生成一个随机的整数列表?

最佳答案

Stream#generate(Supplier)方法接受 Supplier争论。但是,您正在传递调用 #nextElement() 的结果直接,这是一个int .简单的解决方法是使用:

Stream.generate(() -> nextElement())...

() -> nextElement()lambda expression并且是 Supplier<Integer> 的实现.它也可以写成 method reference : EnclosingClass::nextElement .


也就是说,有一种更简单的方法可以使用 Random#ints(long,int,int) 生成随机数流,其中:

Returns a stream producing the given streamSize number of pseudorandom int values, each conforming to the given origin (inclusive) and bound (exclusive).

下面是一个示例,它将生成 [0,100] 范围内的 200 个随机数:

int[] array = new Random().ints(200, 0, 100).toArray();

以上还有使用 IntStream 的好处这让你可以使用 int而不是 Integer .

关于java - "The method generate(Supplier<? extends T>) in the type Stream is not applicable for the arguments (int)"与 List = Stream.generate(),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59906968/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com