2016-08-15 82 views
7

如何寫continue語句forEach循環中使用Java 8如何將繼續在側forEach循環中java8

List<Integer> numList = Arrays.asList(10,21,31,40,59,60); 
numList.forEach(x->{ 
    if(x%2==0){ 
     continue; 
    } 
    System.out.println(x); 
}); 

上面的代碼是給編譯時錯誤說繼續循環之外

List<Integer> numList = Arrays.asList(10,21,31,40,59,60); 
LOOP:numList.forEach(x->{ 
    if(x%2==0){ 
     continue LOOP; 
    } 
    System.out.println(x); 
}); 

上面的代碼是給編譯時錯誤說未定義標籤:LOOP

+1

lambda表達式幾乎等價於匿名類的實例。每次迭代都會在這個實例中調用重寫的方法。所以如果你想繼續,只要條件滿足就返回方法。 – 11thdimension

回答

11

您可以使用return。它不會停止整個循環,而是停止當前的迭代。

使用方法如下:

List<Integer> numList = Arrays.asList(10,21,31,40,59,60); 
numList.forEach(x->{ 
    if(x%2==0){ 
     return; 
    } 
    System.out.println(x); 
}); 
6

我認爲在這種情況下,最好的解決辦法是過濾列表之前執行的println ...

爲例(我沒有測試):

List<Integer> numList = Arrays.asList(10,21,31,40,59,60); 
numList.stream().filter(x-> x%2 != 0).forEach(System.out::println); 
+4

由於懶惰,我認爲foreach中'filter'和'return'之間的性能差異很小。但我更喜歡'filter',因爲它更易於閱讀。 – waltersu