在Java 8中将while循环转换为流
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了在Java 8中将while循环转换为流相关的知识,希望对你有一定的参考价值。
作为练习,我将一些旧代码转换为功能流。我不太了解溪流。转换此代码似乎应该很简单,但我没有太多运气。该方法从给定的整数开始,将其传递给isPrime,如果它是素数则返回true。然后放下要打印的新(下一个)素数。如果isPrime为false,则i递增,我们检查下一个整数。
private static int nextPrime(final int number) {
int i = number + 1;
while (!isPrime(i)) {
i++;
}
return i;
}
答案
我认为除了利用并行性之外没有理由使用Stream
(如果素数恰好相差很远,但在int
界限内这不是真的,所以基本上没有任何好处)。
您可以迭代IntStream
的升序整数(从number + 1
开始)并仅过滤素数。当不可避免地找到一个时,你可以返回第一个。
private static int nextPrime(final int number) {
return IntStream.iterate(number + 1, i -> i + 1)
.filter(Test::isPrime)
.findFirst()
.getAsInt();
}
注意:我用来测试它的类称为Test
,如方法参考所示。您应该将其更改为您的班级名称。
以上是关于在Java 8中将while循环转换为流的主要内容,如果未能解决你的问题,请参考以下文章