PDA

View Full Version : [JAVA] problema con arraylist


blackguardian
31-01-2010, 18:46
salve ho un problema

io uso questo for per scandire un array


for(Case c : casi ) {
}


dove Case è un oggetto e casi è il mio array di oggetti Case
ma se il mio vettore casi fosse un arraylist invece che un array semplice come dovrei fare? e nel caso fosse un Vector? grazie

gokan
31-01-2010, 19:05
Ciao, il for-each funziona tranquillamente con tutti i tipi che implementano l'interfaccia List.
Quindi qualsiasi sia :
List<Case> casi = new ArrayList<Case> oppure new LinkedList<Case> puoi usare il for-each.

bye

blackguardian
01-02-2010, 15:15
e il codice com'è?

banryu79
01-02-2010, 15:46
e il codice com'è?
Di cosa, del ciclo for-each? Identico a quello che hai postato nel primo messaggio.

Alla fine il for-each è "zucchero sintattico": dietro le quinte usa l'iterator della collezione coinvolta nel ciclo.
Qualsiasi oggetto che sia un'implementazione dell'interfaccia java.util.Iterable<E> (e che quindi implementi il metodo per restituire un iteratore su se stessa) può essere scorso con il for-each.

Per esempio, scorrere una List in tre modi: ciclo for "classico", iteratore, cilco "for-each":

List<String> stringhe = new ArrayList<String>();
...riempiamo la lista

[1] ciclo for
for(int i=0; i<stringhe.size(); i++) {
String s = stringhe.get(i);
... fai qualcosa con s
}

[2a] iterator
Iterator<String> it = stringhe.iterator();
while (it.hasNext()) {
String s = it.next();
... fai qualcosa con s
}

[2b] iterator - in ciclo for
for (Iterator<String> it = list.iterator(); it.hasNext();) {
String s = it.next();
... fai qualcosa con s
}

[3] for-each... iterator camuffato
for (String s : stringhe) {
... fai qualcosa con s
}

blackguardian
02-02-2010, 12:07
nel caso uso Vector com'è il ciclo?

ndakota
02-02-2010, 14:24
nel caso uso Vector com'è il ciclo?

edito: allora ho detto una stronzata :D

PGI-Bis
02-02-2010, 14:48
Il foreach funziona con qualsiasi cosa che implementi java.util.Iterable.

blackguardian
03-02-2010, 12:34
quindi anche se uso Vector la forma del ciclo rimane la stessa?

for(Case c : casi ) {
}

ndakota
03-02-2010, 12:37
quindi anche se uso Vector la forma del ciclo rimane la stessa?

for(Case c : casi ) {
}

yep

blackguardian
03-02-2010, 12:48
un altra cosa...per fare il return di un Vector?? com'è il codice?

ad esempio il mio vector casi di oggetti Case

return.....?

ndakota
03-02-2010, 12:51
un altra cosa...per fare il return di un Vector?? com'è il codice?

ad esempio il mio vector casi di oggetti Case

return.....?


Vector<Case> funzione()
{
Vector<Case> case = new Vector<Case>();

........

return case;
}

fero86
03-02-2010, 13:06
Ciao, il for-each funziona tranquillamente con tutti i tipi che implementano l'interfaccia List. non solo List, anche Iterable (che é estesa da List).

blackguardian
03-02-2010, 13:58
non mi riconosce li al for del Vector il vettore casi

Type mismatch: cannot convert from element type Object to Case

ndakota
03-02-2010, 15:42
non mi riconosce li al for del Vector il vettore casi

Type mismatch: cannot convert from element type Object to Case

Stai usando un Vector senza tipo Generico? Lo dichiari come ho fatto sopra io o solo


Vector casi


?

blackguardian
03-02-2010, 16:03
Vector casi = new Vector();

ndakota
03-02-2010, 16:28
Vector casi = new Vector();

E dentro lo riempi solo di Case giusto? A questo punto hai due alternative:

1) o lo fai diventare

Vector<Case> casi = new Vector<Case>();

e non dovresti più avere problemi. Oppure se vuoi continuare con la tua dichiarazione siccome è come se avessi un Vector<Object>

2) fai diventare il for

for(Object obj : casi)

e fai gli opportuni cast, se ce ne è bisogno, all'interno del ciclo.

blackguardian
03-02-2010, 16:46
grazie mille siete dei grandi...