Java 8中的二维数组迭代和过滤

4

我有一个像这样的数组:

int[] array_example = {0, 1, 2, 3, 4, 5, 6, 7, 8, 9};
Long count_array = Arrays.stream(array_example)
                      .filter(x -> x>5)
                      .count();

还有一个二维数组,就像这样:

int[][] matrix_example = {{0, 1, 2, 3, 4}, {5, 6, 7, 8, 9}};
Long count_matrix = 0L;
for(int[] temp: matrix_example){
    for(int x_y: temp){
        if(x_y > 5)
           count_matrix++;
    }
}

如何使用Java 8或更高版本获取矩阵中大于x的元素数量?

2个回答

4
您可以使用flatMapToInt创建矩阵的IntStream,然后像之前一样使用filtercount来处理:
Long count_matrix = Arrays.stream(matrix_example) // Stream<int[]>
        .flatMapToInt(Arrays::stream) // IntStream
        .filter(x_y -> x_y > 5) // filtered as per your 'if'
        .count(); // count of such elements

1
这是一种处理此事的方法:

long count = Arrays.stream(matrix_example)
                   .mapToLong(a -> Arrays.stream(a).filter(x -> x > 5).count()).sum();
  • 通过Arrays.streammatrix_example创建一个流
  • 通过mapToLong将每个数组映射为给定元素大于5的次数
  • 然后我们取所有这些数量并通过sum将它们相加以获得计数

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接