Foros aprenderaprogramar.com
Aprender a programar => Aprender a programar desde cero => Mensaje iniciado por: solidsnake en 15 de Julio 2014, 20:18
-
Como estan, tengo una duda sobre el recorrido de colecciones en Java, usualmente los recorro con for each, pero tambien en el curso nos mencionan de Iterator , y q se usa para evitar posibles errores al usar los metodos usales de recorrido for , while. No entiendo muy bien esa parte , que errores podria haber ? me ayudaria bastante un ejemplo en el cual se note esos errores , y tambien tengo una duda con respecto a la forma con la que lo definen segun leo dice que no trata directamente con la coleccion si no crea una copia de esta , entonces yo me pregunto si es una copia y la modifico , en la original no sera vera reflejado estos cambios ? , muchas gracias por las respuestas de antemano =)
-
Hola, se utiliza la copia para dirigir el recorrido, pero la colección original se modifica si actúas sobre algún elemento de ella.
Sobre los errores: crea un ArrayList de Integer y añádele 5 números, de modo que sus índices irán de 0 a 5.
A continuación usa un for tradicional desde i = 0 hasta i=4. Cuando llegues al elemento 2 bórralo (remove). ¿Cuántos elementos te quedan en el ArrayList? Te quedan 4, de modo que te saltará un error al tratar de alcanzar el índice 4.
Usando iterator no tendrás ese error, porque el recorrido se hace sobre la copia. Por tanto aunque el ArrayList original ya no tenga 5 elementos, la copia sí los tiene y se va recorriendo sin importar que hagas el borrado de elementos.
Si escribes el código del ejemplo tanto con un for tradicional como con iterator entenderás mejor la diferencia. Saludos ;D