PDA

View Full Version : [JAVA] Array statico in ArrayList()


pumax84
15-10-2008, 18:48
Salve a tutti.

Volevo sapere se c'è un modo di farsi restituire il valore di un numero contenuto in un array statico a sua volta memorizzato in una matrice di ArrayList().

Mi spiego meglio. Ammettiamo che io abbia questa matrice di ArrayList():

ArrayList<ArrayList<Object>> matrice = new ArrayList<ArrayList<Object>>();
matrice.add(new ArrayList<Object>());


Ora, inizializzando ed inserendo (ammettiamo di essere nella prima riga e dunque "0") nella matrice un vettore statico:

int[] staticArray = new int[2];
staticArray[0] = 100;
staticArray[1] = 200;

matrice.get(0).add(staticArray);


come posso farmi restituire i valori 100 e 200?

Per esempio, se voglio stamparli (ammettendo d'aver memorizzato staticArray nella seconda colonna e dunque "1"):

System.out.print(matrice.get(0).get(1)..... e poi????? );

Grazie anticipatamente.

Ciao,
Francesco

british
15-10-2008, 20:09
o fai un cast esplicito a int[] :

System.out.println(((int[])matrice.get(0).get(0))[0]);


oppure, se gli elementi dell'ArrayList "interno" sono tutti array di int ti eviti il cast:

ArrayList<ArrayList<int[]>> matrice=new ArrayList<ArrayList<int[]>>();

System.out.println(matrice.get(0).get(0)[0]);


ciao!

british

pumax84
16-10-2008, 08:31
o fai un cast esplicito a int[] :

System.out.println(((int[])matrice.get(0).get(0))[0]);


oppure, se gli elementi dell'ArrayList "interno" sono tutti array di int ti eviti il cast:

ArrayList<ArrayList<int[]>> matrice=new ArrayList<ArrayList<int[]>>();

System.out.println(matrice.get(0).get(0)[0]);


ciao!

british

Grazie mille british! :) Giustamente bisognava porre le parentesi quadre con l'indice all'interno dato che i get di prima restituivano proprio l'elemento staticArray... non c'avevo pensato! :)

Ho dovuto per forza utilizzare il cast esplicito perchè essendo già una matrice (formata da ArrayList e Object non mi dava possibilità di fare una cosa del genere:

ArrayList<ArrayList<Object<int[]>>> matrice=new ArrayList<ArrayList<Object<int[]>>>();


Ciao,
Francesco