流过滤方法以下划线
问题描述:
我正在回答有关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();
}
答
流的过滤方法不包括箭头之后的表达式计算结果为false的元素。
换句话说,当表达式计算结果为true时,它保留值。
正如@Snehal Patel在注释中指出的那样,__
是包含提交给过滤器的当前值的变量。使用_或__作为未使用参数的名称是一种常见做法(特别是在Swift语言中)。
'__'是变量名,并且按照java规则有效。这是'Java'发布的'stream' API。你可以在这里找到基本的流API - > http://www.oracle.com/technetwork/articles/java/ma14-java-se-8-streams-2177646.html –