夜晚10.44,想起了曾經面試的一個問題,可是我回答的卻很水,這就是我要把它寫下來的緣由吧!html
在使用lamda表達式處理集合的時候,發現對return,break,continue不是很明白,因而本身動手測試,發現lamda表達式中使用foreach處理循環時不能使用break和contuine這兩個方法,也就是不能按照for循環遍歷集合的那樣來根據條件來終止循環。可是想達到普通的for循環那樣的效果的話,能夠使用return來達到效果,也就是說,若是你在有一個lamda表達式的循環體中使用return方法,他是不會返回的,只是執行下一次的循環。java
List<String> list = Arrays.asList("ydxddxd", "xxdx", "111111s","6666"); //lamda表達式 list.stream().forEach(e -> { if(e.length() >5) { return; } System.out.print(e); });
從以上代碼能夠看出在forEach中return和continue的效果是同樣的。面試
那麼landa表達式是如何跳出循環的呢?oop
想知道這是爲何,在Stack Overflow中找到一個答案,主要是說foreach()不是一個循環,不是設計爲能夠用break以及continue來停止的操做。測試
https://www.jianshu.com/p/7e423b364068ui
lamda表達式for循環的寫法:https://blog.csdn.net/Kiritovo/article/details/83716131spa