java使用lamba查找元素的矩阵索引位置
我有一个矩阵,由数一和零和一个位数九组成。我想找到这个数字的索引位置,但不是使用for循环,而是使用lambdas。有人能帮我回答这个问题吗
这是我的代码:
import java.util.Arrays;
public class FindArrayIndex {
static final int[][] MATRIX = new int[][] {{1,0,0},{1,0,1},{1,9,0}};
static final int NINE = 9;
public static void main(String[] args){
printMatrix(MATRIX);
printMatrixIndexPosition(findMatrixIndexPosition(MATRIX, NINE));
}
private static void printMatrixIndexPosition(MatrixIndexPosition mip) {
System.out.println(mip);
}
static void printMatrix(int[][] matrix){
Arrays.stream(matrix).map(Arrays::toString).forEach(System.out::println);
}
static MatrixIndexPosition findMatrixIndexPosition(int[][] matrix, int searchNumber){
final int rows = matrix.length;
final int columns = matrix[0].length;
MatrixIndexPosition mip = null;
outter : for(int i = 0; i < rows; i++){
for(int j = 0; j < columns; j++){
if(matrix[i][j] == searchNumber) {
mip = new MatrixIndexPosition(i, j);
break outter;
}
}
}
return mip;
}
}
class MatrixIndexPosition {
int row;
int column;
public MatrixIndexPosition(int row, int column){
this.row = row;
this.column = column;
}
public String toString(){
return String.format("row index: %d \ncol index: %d", row, column);
}
}
# 1 楼答案
不太方便,因为Java streams缺少带索引的zip,int streams不能平面映射到对象,但类似这样的东西应该可以做到: