【问题标题】:Stream filter method with underscore带下划线的流过滤方法
【发布时间】:2018-02-04 08:20:57
【问题描述】:

我正在回答关于代码战的问题,我发现了这个问题

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();

}

【问题讨论】:

标签: java filter java-8 java-stream


【解决方案1】:

流的过滤方法将箭头后面的表达式计算为假的元素排除在外。

换句话说,当表达式计算结果为真时,它会保留值。

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

【讨论】:

    猜你喜欢
    • 2011-10-19
    • 1970-01-01
    • 1970-01-01
    • 2013-07-19
    • 2013-03-31
    • 1970-01-01
    • 2013-06-20
    • 2018-06-30
    • 2011-03-13
    相关资源
    最近更新 更多