|
|||||||
|
|
|
![]() |
|
|
Strumenti |
|
|
#1 |
|
Member
Iscritto dal: Oct 2008
Messaggi: 97
|
[JAVA] - Matrici
buongiorno, ho un problema con una matrice, non capisco quale sia l'errore, se di sintassi o di concetto.
nel momento in cui vado a definire l'oggetto matrice, di arraylist di stringhe, ed il suo costruttore vuoto, ho questa situazione: Codice:
public class MatriceArchi {
public int dim;
public ArrayList <String> [][] mat;
//costruttore vuoto
public MatriceArchi () {
dim = 0;
mat = new ArrayList <String> [][];
}
}
Codice:
mat = new ArrayList <String> [][]; ma non mi dice niente sopra, quando definisco Codice:
public ArrayList <String> [][] mat; per chiarezza, l'obiettivo è la definizione di un oggetto matrice ( [] [] ) in cui ogni cella continene un ArrayList di stringhe. grazie per l'attenzione, buona giornata! |
|
|
|
|
|
#2 |
|
Senior Member
Iscritto dal: Oct 2001
Messaggi: 11471
|
In java non si possono creare array di generics.
|
|
|
|
|
|
#3 |
|
Member
Iscritto dal: Oct 2008
Messaggi: 97
|
cioè, in parole povere, non posso mettere in un array quello che voglio?
e quale potrebbe essere l'alternativa per quello che devo fare? |
|
|
|
|
|
#4 |
|
Senior Member
Iscritto dal: Jul 2006
Città: Bergamo
Messaggi: 401
|
In verità si possono creare:
Codice:
public static <T extends Object> T[][] emptyMatrix(Class<? extends Object> of, int row, int col) {
T[][] matrix = (T[][]) java.lang.reflect.Array.newInstance(of, row, col);
for (int i = 0; i < row; i++)
for (int j = 0; j < col; j++)
try { matrix[i][j] = (T)of.newInstance(); }
catch (InstantiationException ex) { System.err.println(ex); }
catch (IllegalAccessException ex) { System.err.println(ex); }
return matrix;
}
Codice:
int W = 10, H = 10; ArrayList<String>[][] data = emptyMatrix(ArrayList.class, W, H);
__________________
iMac 27" 5K |
|
|
|
|
|
#5 | |
|
Member
Iscritto dal: Oct 2008
Messaggi: 97
|
Quote:
se non ho capito male, nel doppio ciclo di for me la sta inizializzando? |
|
|
|
|
|
|
#6 |
|
Senior Member
Iscritto dal: Jul 2006
Città: Bergamo
Messaggi: 401
|
Esatto, nel doppio ciclo for inizializza la matrice. Ovviamente nulla ti vieta di farlo al di fuori di quel metodo:
Codice:
int W = 10, H = 10;
ArrayList<String>[][] data = (ArrayList[][]) java.lang.reflect.Array.newInstance(ArrayList.class, W, H);
for(int x = 0; x < W; x++)
for(int y = 0; y < H; y++)
data[x][y] = new ArrayList<String>(); //ArrayList va creato proma di poter essere usato
data[0][2].add("cane");
data[0][2].add("gatto");
data[5][3].add("casa");
data[5][3].add("ufficio");
System.out.println(data[0][2]); //stampa [cane, gatto]
System.out.println(data[5][3]); //stampa [casa, ufficio]
__________________
iMac 27" 5K |
|
|
|
|
|
#7 |
|
Member
Iscritto dal: Oct 2008
Messaggi: 97
|
ok, grazie mille, sembrerebbe perfetto per quello che ci devo fare!
|
|
|
|
|
| Strumenti | |
|
|
Tutti gli orari sono GMT +1. Ora sono le: 04:47.




















