|
|
|
![]() |
|
Strumenti |
![]() |
#1 |
Member
Iscritto dal: Apr 2002
Messaggi: 64
|
[Java] Domanda iterazione
Sto usando Java (ma vale anche per altri linguaggi tipo .NET).
Uso un costrutto tipo foreach o altri amenicoli tipo Iterator su una collezione di oggetti. Se all'interno del ciclo vado a rimuovere un oggetto dalla collection (magari lo stesso oggetto obj su cui l'iterator mi sta facendo lavorare), rischio di incasinare il ciclo (o l'Iterator) stesso? Se usassi un semplice for con contatore le cose le incasinerei non poco. Esempio Java: for(Object obj : setDiObject ) { .... setDiObject.remove(obj); .... } Tnx. |
![]() |
![]() |
![]() |
#2 | |
Senior Member
Iscritto dal: Nov 2005
Città: TO
Messaggi: 5206
|
Quote:
__________________
Andrea, SCJP 5 (91%) - SCWCD 5 (94%) Ultima modifica di andbin : 22-11-2007 alle 15:02. |
|
![]() |
![]() |
![]() |
#3 |
Member
Iscritto dal: Apr 2002
Messaggi: 64
|
Effettivamente l'operazione nel caso di una linkedlist (ad esempio) dovrebbe essere meno "traumatica".
Comunque, tornando al mio caso : (itero sugli entry di una Hashtable < K, MyObject >) for( Map.Entry<K, MyObject> entry : hashtable.entrySet() ) { ... if( condizione ) hashtable.remove(entry.getKey()); ... } Mi salvo se il for si facesse una copia dell'EntrySet, e se non la fa, ci aggiungerò un clone(), giusto? (sperando che il clone non sia troppo deep, ma non credo) |
![]() |
![]() |
![]() |
Strumenti | |
|
|
Tutti gli orari sono GMT +1. Ora sono le: 12:51.