2017-08-26 73 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语言中)。