将循环转换为lambda和stream

时间:2016-10-12 05:17:29

标签: java lambda java-8 java-stream

我有这段代码,并且花了一些时间尝试使用lambda表达式和流转换for for循环,但是失败了。

for(int i = 0, j = 308; i < 17;i++, j -= 18) {
            if(consoleMessages[i] != null) {
                newBoldFont.drawBasicString(consoleMessages[i], 9, j, 16777215, 0);
            }
        }

我试过这个,也试过很多其他的方法,但不记得我有什么。

Arrays.stream(consoleMessages).forEach(x->{
            IntStream.range(308,0).map(inty->inty-=18).forEach(v->{
                newBoldFont.drawBasicString(x, 9, v, 16777215, 0);
                return;
            });
        });

1 个答案:

答案 0 :(得分:0)

如果你坚持......

    IntStream.range(0, 17)
        .forEach(
            i-> {
                if(consoleMessages[i] != null)
                    newBoldFont.drawBasicString(consoleMessages[i], 9, 308 - 18 * i, 16777215, 0);
            });

...但为什么有人想要这样做?循环是完美的,它是可读的,这是可以理解的。保留代码原样。