2010-03-08 4 views
0

J'ai un tableau 2D, disons comme ceci:comment réduire tableau 2d

2 0 8 9 
3 0 -1 20 
13 12 17 18 
1 2 3 4 
2 0 7 9 

Comment créer un tableau réduit de disons 2ème rang et la troisième colonne?

2 0 9 
13 12 18 
1 2 4 
2 0 9 
+0

Malheureusement, il n'y a pas de built-in pour cela. Vous devriez chercher une bibliothèque de manipulation de matrice. – Thilo

+0

Cherchez-vous une bibliothèque ou une fonction que vous pourriez écrire pour effectuer l'action? – dagoof

+0

fonction qui me permettra de ne pas imprimer mais créer ce tableau. – owca

Répondre

4

Suppression de lignes et de colonnes dans les tableaux sont des opérations coûteuses parce que vous avez besoin de changer les choses, mais ces méthodes font ce que vous voulez:

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; 
} 

Vous voudrez peut-être étudier d'autres structures de données qui permettent des suppressions moins coûteuses, par exemple, des listes doublement chaînées. Voir, par exemple, Dancing Links.

+1

+1 pour suggérer une structure de données différente. – Cam

1
public class TestMe { 

/** 
* @param args 
*/ 
public static void main(String[] args) { 
    // TODO Auto-generated method stub 

    int array[][] = {{2,0, 8, 9,}, 
         {3, 0, -1, 20}, 
         {13, 12, 17, 18}, 
         {1, 2, 3, 4,}, 
         {2, 0, 7, 9}}; 

    for(int i=0; i<array.length;i++){ 
     if(i == 1){ 
      continue; 
     } 
     for(int j=0; j<array[i].length;j++){ 
      if(j==2){ 
       continue; 
      } 
      System.out.print(array[i][j]+" "); 
     } 
     System.out.println(""); 
    } 


} 

}

+0

vous pouvez essayer! = ... – alphazero

+0

de cette façon, je ne peux l'imprimer que mais il ne me donne pas le tableau réduit:/ – owca