使用下划线

时间:2017-08-26 13:05:15

标签: java filter java-8 java-stream

我正在回答codefights上的问题,我发现了这个问题

inputArray没有元素k - 1, 2k - 1, 3k - 1等。

实施例

  

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

     

输出应该是   extractEachKth(inputArray,k)= [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 个答案:

答案 0 :(得分:2)

流的过滤方法排除了箭头评估后的表达式为false的元素。

换句话说,它在表达式求值为true时保留值。

正如@Snehal Patel在评论中所指出的,__是变量,包含提交给过滤器的当前值。通常的做法是使用_或__作为未使用参数的名称(例如,特别是在Swift语言中)。