Java 如何减少二维阵列
我有一个2d数组,比如说:Java 如何减少二维阵列,java,arrays,multidimensional-array,Java,Arrays,Multidimensional Array,我有一个2d数组,比如说: 2 0 8 9 3 0 -1 20 13 12 17 18 1 2 3 4 2 0 7 9 如何创建一个减少了第二行和第三列的数组 2 0 9 13 12 18 1 2 4 2 0 9 公共类TestMe{ /** *@param args */ 公共静态void main(字符串[]args){ //TODO自动生成的方法存根 int数组[][]={{2,0,8,9,}, {3
2 0 8 9
3 0 -1 20
13 12 17 18
1 2 3 4
2 0 7 9
如何创建一个减少了第二行和第三列的数组
2 0 9
13 12 18
1 2 4
2 0 9
公共类TestMe{
/**
*@param args
*/
公共静态void main(字符串[]args){
//TODO自动生成的方法存根
int数组[][]={{2,0,8,9,},
{3, 0, -1, 20},
{13, 12, 17, 18},
{1, 2, 3, 4,},
{2, 0, 7, 9}};
对于(inti=0;ipublic类TestMe{
/**
*@param args
*/
公共静态void main(字符串[]args){
//TODO自动生成的方法存根
int数组[][]={{2,0,8,9,},
{3, 0, -1, 20},
{13, 12, 17, 18},
{1, 2, 3, 4,},
{2, 0, 7, 9}};
对于(int i=0;i来说,删除数组中的行和列是代价高昂的操作,因为您需要进行移位,但这些方法可以实现您想要的功能:
static int[][] removeRow(int[][] data, int r) {
int[][] ret = new int[data.length - 1][];
System.arraycopy(data, 0, ret, 0, r);
System.arraycopy(data, r+1, ret, r, data.length - r - 1);
return ret;
}
static int[][] removeColumn(int[][] data, int c) {
for (int r = 0; r < data.length; r++) {
int[] row = new int[data[r].length - 1];
System.arraycopy(data[r], 0, row, 0, c);
System.arraycopy(data[r], c+1, row, c, data[r].length - c - 1);
data[r] = row;
}
return data;
}
static int[][]删除流(int[][]数据,int r){
int[][]ret=new int[data.length-1][];
数组复制(数据,0,ret,0,r);
System.arraycopy(数据,r+1,ret,r,data.length-r-1);
返回ret;
}
静态int[][]removeColumn(int[][]数据,int c){
for(int r=0;r
但是,您可能需要研究其他允许更便宜的删除的数据结构,即双链接列表。例如,请参见。删除数组中的行和列是昂贵的操作,因为您需要移动内容,但这些方法可以满足您的需要:
static int[][] removeRow(int[][] data, int r) {
int[][] ret = new int[data.length - 1][];
System.arraycopy(data, 0, ret, 0, r);
System.arraycopy(data, r+1, ret, r, data.length - r - 1);
return ret;
}
static int[][] removeColumn(int[][] data, int c) {
for (int r = 0; r < data.length; r++) {
int[] row = new int[data[r].length - 1];
System.arraycopy(data[r], 0, row, 0, c);
System.arraycopy(data[r], c+1, row, c, data[r].length - c - 1);
data[r] = row;
}
return data;
}
static int[][]删除流(int[][]数据,int r){
int[][]ret=new int[data.length-1][];
数组复制(数据,0,ret,0,r);
System.arraycopy(数据,r+1,ret,r,data.length-r-1);
返回ret;
}
静态int[][]removeColumn(int[][]数据,int c){
for(int r=0;r
但是,您可能希望研究其他允许更便宜删除的数据结构,即双链接列表。例如,请参见。不幸的是,没有内置的数据结构。您应该寻找矩阵操作库。您是否正在寻找一个库或一个可以编写的函数来执行操作。函数将允许我不打印而是创建此数组。不幸的是,没有内置的。你应该查找矩阵操纵库。你是在寻找一个库还是一个可以编写的函数来执行操作。函数允许我不打印而是创建此数组。这样我可以只打印它,但它不会给我缩小数组:/n这样我只能打印它,但它不会给我缩小数组:/