从多维数组中删除元素

时间:2014-06-23 20:22:30

标签: java

我在java中有一个二维数组。

例如,

double count=0;
double[][] arr1 =new double[3][3];
for(int i=0;i<3;i++)
{
for(int j=0;j<3;j++)
 {
   arr1[i][j]=count;
   count++;
 }
}

现在,我想删除i或j值为1的所有元素。

arr1[1][0], arr1[1][1], arr1[1][2], arr[0][1], arr[2][1] ...

我怎样才能做到这一点?

4 个答案:

答案 0 :(得分:1)

for(int i=0;i<3;i++)
{
for(int j=0;j<3;j++)
 {
   if(i==1 || j==1){
     arr1[i][j]=0;
   }
 }   
}

或效率更高:

for(int i=0;i<3;i++){
    arr1[i][1]=0;
}
for(int i=0;i<3;i++){
    arr1[1][i]=0;
}

答案 1 :(得分:1)

复制到arr2。 如果你有

[1][2][3]
[4][5][6]
[7][8][9]

你会得到

[1][3]
[7][9]

如果你想

[1][-][3]
[-][-][-]
[7][-][9]

见shijima的回答

double[][] arr2 = new double[arr1.length][arr1[0].length];
int ti = 0, tj = 0;


for(int i=0; i<arr1.length - 1; i++) {
    if (i > 0)
      ti = i+1;
    else
      ti = i;
  for(int j=0; j<arr1[0].length - 1; j++) {
    if (j > 0)
      tj = j+1;
    else
      tj = j;
    arr2[i][j] = arr1[ti][tj];
  }
}

答案 2 :(得分:0)

ArrayList会让您的生活变得更轻松,因为您可以致电remove(int),但如果您坚持使用数组,则可以执行此操作。

double[] tmp = arr1[0];
arr1 = Arrays.copyOfRange(arr1, 1, arr1.length);
arr1[0] = tmp;

答案 3 :(得分:0)

如果i = 1,您可以避免添加任何内容,这样您就不必担心删除任何内容,因为无论如何它都将为空...

    double count = 0;
    double[][] arr1 = new double[3][3];

    outerLoop: for (int i = 0; i < 3; i++) {
        for (int j = 0; j < 3; j++) {
            if (i == 1) {
                continue outerLoop;
            }
            arr1[i][j] = count;
            count++;

        }
    }

    for (int x = 0; x < 3; x++) {
        for (int y = 0; y < 3; y++) {
            System.out.println("arr1[" + x + "][" + y + "]=" + arr1[x][y]);
        }
    }