gpt4 book ai didi

java - IntStream 代替 for 无条件循环

转载 作者:行者123 更新时间:2023-11-29 07:25:27 24 4
gpt4 key购买 nike

在回答我的问题时,这里建议用户 nullpointer - https://stackoverflow.com/a/53905940/10824969如何使用 IntStream.iterate 将 for 循环转换为流方式。

我有一个类似的 for 循环条件,我用它来迭代

void printMultiples(int number, int threshold) {
for (int i = number; ; i = i + threshold) {
if (i < threshold) {
break;
} else {
System.out.println(i);
}
}
}

尝试将其转换为

IntStream.iterate(number, i -> i + number).forEach(System.out::println);
^^
// Non-short-circuit operation consumes the infinite stream

上面的代码中有IDE的警告。我还尝试使用 IntStream.range 检查倍数,下面改为打印所有数字

IntStream.range(number, threshold).forEach(System.out::println);

最佳答案

您可以过滤您的流作为

IntStream.range(number, threshold)
.filter(i -> i % number == 0) // only those divisible by number
.forEach(System.out::println);

或者如果 Java-9 或更高版本是一个选项,您可以使用

IntStream.iterate(number, i -> i < threshold, i -> i + number)
.forEach(System.out::println);

或者更恰本地说,因为它听起来像一个 while 循环,使用 Intstream.takeWhile作为:

IntStream.iterate(number, i -> i + number)
.takeWhile(i -> i < threshold)
.forEach(System.out::println);

关于java - IntStream 代替 for 无条件循环,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53966452/

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