java - 从 Java 中的二维数组矩阵获取行和列

标签 java arrays matrix multidimensional-array

假设我在 Java 中有一个这样的二维数组(矩阵)...

int[][] MyMat = {{0,1,2,3,4}, {9,8,7,6,5}};

如果我想提取列,我可以像这样轻松完成......

int[] My0= MyMat[0]; //My0 = {0,1,2,3,4}
int[] My1= MyMat[1]; //My1 = {9,8,7,6,5}

但是我怎样才能提取行呢?...

int[] My_0= ?; //My_0 = {0,9}
int[] My_1= ?; //My_1 = {1,8}
int[] My_2= ?; //My_2 = {2,7}
int[] My_3= ?; //My_3 = {3,6}
int[] My_4= ?; //My_4 = {4,5}

是否有实现此目的的简写方式?

最佳答案

如果要获取行,则需要从每个数组中获取值,然后根据这些值创建一个新数组。您可以手动分配值,或使用 for 循环,例如这样...

int[][] MyMat = {{0,1,2,3,4}, {9,8,7,6,5}};

// get your columns... (easy)
int[] My0= MyMat[0]; //My0 = {0,1,2,3,4}
int[] My1= MyMat[1]; //My1 = {9,8,7,6,5}

// get the rows... (manually)
int[] My_0= new int[]{MyMat[0][0],MyMat[1][0]}; //My_0 = {0,9}
int[] My_1= new int[]{MyMat[0][1],MyMat[1][1]}; //My_1 = {1,8}
int[] My_2= new int[]{MyMat[0][2],MyMat[1][2]}; //My_2 = {2,7}
int[] My_3= new int[]{MyMat[0][3],MyMat[1][3]}; //My_3 = {3,6}
int[] My_4= new int[]{MyMat[0][4],MyMat[1][4]}; //My_4 = {4,5}

// get the rows... (as a for-loop)
int size = MyMat.length;
int[] My_0 = new int[size]; //My_0 = {0,9}
int[] My_1 = new int[size]; //My_1 = {1,8}
int[] My_2 = new int[size]; //My_2 = {2,7}
int[] My_3 = new int[size]; //My_3 = {3,6}
int[] My_4 = new int[size]; //My_4 = {4,5}
for (int i=0;i<size;i++){
    My_0[i] = MyMat[i][0];
    My_1[i] = MyMat[i][1];
    My_2[i] = MyMat[i][2];
    My_3[i] = MyMat[i][3];
    My_4[i] = MyMat[i][4];
}

否则,翻转整个数组,使其存储 {row,column} 而不是 {column,row},就像这样...

int[][] MyMat = {{0,9},{1,8},{2,7},{3,6},{4,5}};

// get the rows... (easy)
int[] My_0= MyMat[0]; //My_0 = {0,9}
int[] My_1= MyMat[1]; //My_1 = {1,8}
int[] My_2= MyMat[2]; //My_2 = {2,7}
int[] My_3= MyMat[3]; //My_3 = {3,6}
int[] My_4= MyMat[4]; //My_4 = {4,5}

// get the columns... (manually)
int[] My0= new int[]{MyMat[0][0],MyMat[1][0],MyMat[2][0],MyMat[3][0],MyMat[4][0]}; //My0 = {0,1,2,3,4}
int[] My1= new int[]{MyMat[0][1],MyMat[1][1],MyMat[2][1],MyMat[3][1],MyMat[4][1]}; //My1 = {9,8,7,6,5}

// get the columns... (as a for-loop)
int size = MyMat.length;
int[] My0 = new int[size]; //My0 = {0,1,2,3,4}
int[] My1 = new int[size]; //My1 = {9,8,7,6,5}
for (int i=0;i<size;i++){
    My0[i] = MyMat[0][i];
    My1[i] = MyMat[1][i];
}

请注意,不可能有一个简写形式来让您轻松地同时获得行和列 - 您必须决定您想要更多,并将数组结构化为该格式。

关于java - 从 Java 中的二维数组矩阵获取行和列,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11076338/

相关文章:

python - 沿一个轴的矩阵相似度

algorithm - 在矩阵匹配模式中寻找漏洞的矩阵算法

java - 在 Java 中,char[] 是一个对象吗?

Java 方法引用抛出 NPE

java - 找不到指定的 VM 安装 : type Standard VM, 名称 jre7

java - 迭代二维数组错误

java - HTTP 状态 500 - 无法编译 JSP : import cannot be resolved to a type 的类

javascript - 关于 Javascript 中的 pop() 和 push()

javascript - 如何列出对象?

c - 寄存器的结构体还是矩阵?