关于java:面试官Lambda-表达式中的-forEach-如何提前终止这次被问倒了

30次阅读

共计 1184 个字符,预计需要花费 3 分钟才能阅读完成。

情景展现

如上图所示,咱们想要终止 for 循环,应用 return。

执行后果如下:

咱们能够看到,只有赵六没被打印进去,后续的数组元素仍旧被执行了。

也就是说,关键字 ”return”,在这里执行的成果相当于一般 for 循环里的关键词 continue”。

举荐一个开源收费的 Spring Boot 最全教程:

https://github.com/javastacks/spring-boot-best-practice

起因剖析

咱们晓得,在一般 for 循环外面,想要提前结束 (终止) 循环体应用 ”break”;

完结本轮循环,进行下一轮循环应用 ”continue”;

另外,在一般 for 里,如果应用 ”return”,不仅强制完结 for 循环体,还会提前结束蕴含这个循环体的整个办法。

而在 Java8 中的 forEach() 中,”break” 或 ”continue” 是不被容许应用的,而 return 的意思也不是原来 return 代表的含意了。

咱们来看看源码:

forEach(),说到底是一个办法,而不是循环体,完结一个办法的执行用什么?当然是 return 啦;

java8 的 forEach()和 JavaScript 的 forEach()用法是何其的类似,感兴趣的能够去理解下(在文末)。

Java 不是万能的,不要再吐槽它垃圾了。

解决方案

计划一:应用原始的 foreach 循环

应用过 eclipse 的老铁们应该晓得,当咱们输出:foreach,再按快捷键:Alt+/,就会呈现 foreach 的代码提醒。

如上图所示,这种格局的 for 循环才是真正意义上的 foreach 循环。

在 idea 中输出,依照上述操作是不会有任何代码提醒的,那如何能力在 idea 中,调进去呢?

for 循环能够提前终止。

形式一:break

形式二:return(不举荐应用)

计划二:抛出异样

咱们晓得,要想完结一个办法的执行,失常的逻辑是:应用 return;

然而,在理论运行中,往往有很多不突发状况导致代码提前终止,比方:空指针异样,其实,咱们也能够通过抛出假异样的形式来达到终止 forEach()办法的目标。

如果感觉这种形式不敌对,能够再包装一层。

这样,就完满了。

这里,须要留神的一点是:要确保你 forEach()办法体内不能有其它代码可能会抛出的异样与本人手动抛出并捕捉的异样一样;

否则,当真正该因异样导致代码终止的时候,因为咱们手动捕捉了并且没做任何解决,岂不是搬起石头砸本人的脚吗?

起源:https://blog.csdn.net/weixin_…

近期热文举荐:

1.1,000+ 道 Java 面试题及答案整顿(2022 最新版)

2. 劲爆!Java 协程要来了。。。

3.Spring Boot 2.x 教程,太全了!

4. 别再写满屏的爆爆爆炸类了,试试装璜器模式,这才是优雅的形式!!

5.《Java 开发手册(嵩山版)》最新公布,速速下载!

感觉不错,别忘了顺手点赞 + 转发哦!

正文完
 0