PDA

View Full Version : [Java] ArrayList e array


Mixmar
23-07-2007, 14:10
Domanda molto stupida probabilmente, ma da un po' mi frulla nel cervello e non ne vengo a capo.

Siamo nel Java 1.4, e non ci sono i generici: di conseguenza, per trasformare un ArrayList in array, devo fare:


nomeArray = nomeArrayList.toArray();


però l'array che mi viene fuori non è tipizzato correttamente; allora faccio qualcosa tipo:


TipoElementoArray[] nomeArray = new TipoElementoArray[nomeArrayList.size()];
nomeArrayList.toArray(nomeArray);


E' una cosa assolutamente idiota e/o esiste un modo più cool, object-oriented, carino, efficiente eccetera per farlo?

Denghiù!

Mixmar
23-07-2007, 15:13
Sù, non interessa a nessuno? :D

^TiGeRShArK^
23-07-2007, 15:31
Eclipse sta buildando.. qdi non lo posso usare :stordita:
Ma così ad occhio direi:

String [] strings = stringList.toArray();

o no? :fagiano:
Al max nel caso eclipse si inkazzi ci aggiungerei un cast a String[] subito dopo l'uguale.

Mixmar
23-07-2007, 16:08
Eclipse sta buildando.. qdi non lo posso usare :stordita:
Ma così ad occhio direi:

String [] strings = stringList.toArray();

o no? :fagiano:
Al max nel caso eclipse si inkazzi ci aggiungerei un cast a String[] subito dopo l'uguale.

Sì, aggiungendo il cast compila, ma poi mi sembra (è un po' che non provo) che a Runtime non funzionava (ClassCastException o roba simile).

^TiGeRShArK^
23-07-2007, 17:07
bhè...
se hai stringhe nell'array non ti dovrebbe dare il classcast exception.
Te lo da solo se hai un tipo diverso rispetto a quello a cui casti :mbe:

PGI-Bis
23-07-2007, 19:12
Un array di Object non è assegnabile ad un riferimento di tipo array di String tramite la conversione esplicita.

E' ammesso il contrario ma farlo significa candidarsi ad un martellata sui ditini.

andbin
23-07-2007, 20:32
Siamo nel Java 1.4, e non ci sono i generici: di conseguenza, per trasformare un ArrayList in array, devo fare:


nomeArray = nomeArrayList.toArray();


però l'array che mi viene fuori non è tipizzato correttamenteSe, per fare un esempio, sai che il tuo array list contiene solamente oggetti String, puoi fare:

String[] a = (String[]) arrList.toArray (new String[0]);

Senza i generics, è il massimo che puoi fare.

Mixmar
24-07-2007, 09:08
Un array di Object non è assegnabile ad un riferimento di tipo array di String tramite la conversione esplicita.

E' ammesso il contrario ma farlo significa candidarsi ad un martellata sui ditini.

Mmmm... immagino che centri qualcosa il fatto che il tipo "array di Tipo" non è "figlio" del tipo "array di Object", anche se Tipo è figlio di Object... vero? :stordita:

Se, per fare un esempio, sai che il tuo array list contiene solamente oggetti String, puoi fare:

String[] a = (String[]) arrList.toArray (new String[0]);

Senza i generics, è il massimo che puoi fare.

Grazie, credo che la tua soluzione faccia quello che fa la mia, solo in una riga sola.

Domanda aggiuntiva: può dare qualche vantaggio in termini di prestazioni pre-inizializzare l'array alla sua effettiva futura dimensione come faccio io?