Java 带下划线的流过滤器方法

Java 带下划线的流过滤器方法,java,filter,java-8,java-stream,Java,Filter,Java 8,Java Stream,我在回答代码战的问题时发现了这个问题 不带元素的输入阵列k-1、2k-1、3k-1等 范例 对于输入阵列=[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

我在回答代码战的问题时发现了这个问题

不带元素的输入阵列
k-1、2k-1、3k-1

范例

对于输入阵列=[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();

}

流的filter方法排除箭头后的表达式计算结果为false的元素

换句话说,当表达式的计算结果为true时,它会保留这些值


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

\uuuu
是变量名,根据java规则有效。这是随
Java8
发布的
stream
API。您可以在这里找到基本的流api->