2012-04-22 11 views
9

Il nostro compito a casa ci chiede di utilizzare una matrice frastagliata per memorizzare i valori di una matrice booleana bidimensionale. Esiste una classe java integrata per l'array frastagliato o dovrò crearlo manualmente con una Array of ArrayLists?Java Jagged Array

risposta

16

In Java, una matrice 2D è una matrice di oggetti di array 1D. Ogni array 1D può avere una lunghezza diversa, il che significa che si ottengono array frastagliati fuori dalla scatola.

Ad esempio, il seguente è perfettamente valido Java, e stampa 3 5 3 4:

int x[][] = {{0,1,2,3,4},{0,1,2},{0,1,2,3}}; 
    System.out.println(x.length); 
    System.out.println(x[0].length); 
    System.out.println(x[1].length); 
    System.out.println(x[2].length); 
+0

Quindi, se ho bisogno di aggiungere più elementi a questi array individuali, dovrei ridimensionare x [1] per esempio invece di solo x? –

+1

@ Chris: Sì. Ad esempio 'x [1] = Arrays.copyOf (x [1], newLength);' – NPE

0

Sembra in realtà come si potrebbe desiderare un'implementazione matrice sparsa. Puoi ottenere prestazioni molto migliori se devi modificare la matrice. Le operazioni di copia di array sono piuttosto costose. Sparse matrices/arrays in Java