2010-02-24 4 views
2

Je veux stocker des tableaux dans un tableau, mais je ne sais pas exactement comment le faire.Comment gérer un tableau multidimensionnel?

Ce que je veux est: J'ai un tableau appelé, par exemple, tableau.

Dans une méthode que je veux ajouter un élément à ce tableau, cet élément serait également un tableau.

Par exemple, ce serait dans mon premier tableau: (tous les éléments de celui-ci est ajouté lorsque la méthode est appelée)

{1,2},{2,3},{5,6} 

Merci.

Répondre

5

Pour travailler uniquement avec des tableaux, voir: http://www.ensta.fr/~diam/java/online/notes-java/data/arrays/arrays-2D-2.html

Par exemple, d'affecter tout ce que vous pourriez faire:

int[][] tri; 

//... Allocate each part of the two-dimensional array individually. 
tri = new int[10][];  // Allocate array of rows 
for (int r=0; r < 2; r++) { 
    tri[r] = new int[2]; // Allocate a row 
} 

Cependant, si vous avez besoin pour soutenir une opération append vous feriez mieux d'utiliser une autre structure de données telle que List, ArrayList, etc pour contenir le "tableau" de niveau supérieur. De cette façon, vous pouvez simplement ajouter des tableaux au lieu d'avoir à jouer à des jeux de réallocation. La solution de Sean est une bonne solution pour cela.

1
void append(List<int[]> arrays) { 
    int[] newItem = ...; 
    arrays.add(newItem); 
} 

... 

List<int[]> arrays = new ArrayList<int[]>(); 
... 
// then call append() to do your appending 
append(arrays); 
... 
// now get the array of arrays out of it 
int[][] as2DArray = arrays.toArray(new int[0][]); 
+0

Merci, et j'ai encore 1 question: comment puis-je vérifier si un tableau est déjà dans le tableau principal? – Robert

+0

En appelant arrays.contains (theIntArray); Si vous voulez être sûr qu'il n'y a pas d'entrées en double dans votre collection principale, utilisez un LinkedHashSet au lieu d'un ArrayList. Un LinkedHashSet maintient l'ordre et n'autorise pas les entrées en double. Une ArrayList maintient l'ordre mais autorise les entrées en double. –