2017-08-26 54 views
2

我正在回答有關codefights問題,我發現這個問題流過濾方法以下劃線

inputArray而不元件k - 1, 2k - 1, 3k - 1

對於inputArray = [1,2,3, 4,5,6,7,8,9,10]和k = 3,

輸出應該是 extractEachKth = [1,2,4,5,7,8,10] 。

其中一個答案是下面的代碼,我不明白。

int i; 

int[] extractEachKth(int[] inputArray, int k) 

{ 

    return Arrays.stream(inputArray).filter(__ -> ++i % k > 0).toArray(); 

} 
+1

'__'是變量名,並且按照java規則有效。這是'Java'發佈的'stream' API。你可以在這裏找到基本的流API - > http://www.oracle.com/technetwork/articles/java/ma14-java-se-8-streams-2177646.html –

回答

2

流的過濾方法不包括箭頭之後的表達式計算結果爲false的元素。

換句話說,當表達式計算結果爲true時,它保留值。

正如@Snehal Patel在註釋中指出的那樣,__是包含提交給過濾器的當前值的變量。使用_或__作爲未使用參數的名稱是一種常見做法(特別是在Swift語言中)。