Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/382.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 将循环转换为lambda和streams_Java_Lambda_Java 8_Java Stream - Fatal编程技术网

Java 将循环转换为lambda和streams

Java 将循环转换为lambda和streams,java,lambda,java-8,java-stream,Java,Lambda,Java 8,Java Stream,我有这段代码,并且花了一些时间尝试使用lambda表达式和流将其转换为for循环,但是失败了 for(int i = 0, j = 308; i < 17;i++, j -= 18) { if(consoleMessages[i] != null) { newBoldFont.drawBasicString(consoleMessages[i], 9, j, 16777215, 0); } }

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

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

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

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

显示您已尝试过的内容。使用
过滤器
操作,流代码将显著改善…@Holger是的,但这样会失去与索引的关系。或者你知道怎么保存这个吗?(除了在数组中进行搜索以确定索引或使用中间的“pair”对象之外。)我不是说
map
ping,只是过滤,
.filter(I->consoleMessages[I]!=null)。forEach(I->newBoldFont.rubsicstring(consoleMessages[I],9308-18*I,16777215,0))
    IntStream.range(0, 17)
        .forEach(
            i-> {
                if(consoleMessages[i] != null)
                    newBoldFont.drawBasicString(consoleMessages[i], 9, 308 - 18 * i, 16777215, 0);
            });