forEach無法跳出迴圈的解決思路

2021-10-02 04:08:57 字數 692 閱讀 3106

如果使用過foreach方法來遍歷集合,會發現在lambda表示式中的return並不會終止迴圈,這是由於lambda的底層實現導致的,看下面的例子:

public static void main(string args)  

});

} //返回結果: //s = a //s = b //s = c

可以看到在foreach方法中即是採用了return,迴圈卻仍在繼續,那有什麼辦法能跳出迴圈呢?

跳出的前提肯定是滿足了某一條件的,所以可以使用anymatch()方法:anymatch()裡接收乙個返回值為boolean型別的表示式,只要返回true就會終止迴圈,這樣可以將業務邏輯寫在返回判斷結果前。

list.stream()

.anymatch(s -> );

// do something

// s=a

// do something

// s=b

同理,採用類似的思路可以使用filter()方法,思路是一樣的,其中findany表示只要找到滿足的條件時停止。

list.stream()

.filter(s -> ).findany();

//返回結果:

//s = a

//s = b

forEach跳出迴圈體

在foreach中,不能使用 continue 和 break 可以使用 return 或 return false 跳出迴圈,效果與 for 中 continue 一樣。注意該方法無法一次結束所有迴圈。foreach 跳出本次迴圈,使用return 1,2,3,4,5 foreach functi...

forEach方法如何跳出迴圈

1.for方法跳出迴圈 function getitembyid arr,id return item 2.foreach方法跳出迴圈 function getitembyid arr,id catch e return item 3.備註 3.1 foreach 不能使用break和continu...

forEach方法如何跳出迴圈

1.for方法跳出迴圈 function getitembyid arr,id return item 2.foreach方法跳出迴圈 function getitembyid arr,id catch e return item 3.補充 3.1 foreach 不能使用break和continu...