Autor Tema: Duda sobre Iterator en colecciones java  (Leído 2923 veces)

solidsnake

  • Sin experiencia
  • *
  • APR2.COM
  • Mensajes: 6
    • Ver Perfil
Duda sobre Iterator en colecciones java
« 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 =)
« Última modificación: 31 de Agosto 2014, 19:02 por Alex Rodríguez »

César Krall

  • Moderador Global
  • Experto
  • *******
  • Mensajes: 2078
  • No vales por lo que dices, sino por lo que haces
    • Ver Perfil
    • aprenderaprogramar.com
Re:Duda sobre Iterator
« Respuesta #1 en: 15 de Julio 2014, 20:33 »
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
Responsable de departamento de producción aprenderaprogramar.com

 

Sobre la educación, sólo puedo decir que es el tema más importante en el que nosotros, como pueblo, debemos involucrarnos.

Abraham Lincoln (1808-1865) Presidente estadounidense.

aprenderaprogramar.com: Desde 2006 comprometidos con la didáctica y divulgación de la programación

Preguntas y respuestas

¿Cómo establecer o cambiar la imagen asociada (avatar) de usuario?
  1. Inicia sesión con tu nombre de usuario y contraseña.
  2. Pulsa en perfil --> perfil del foro
  3. Elige la imagen personalizada que quieras usar. Puedes escogerla de una galería de imágenes o subirla desde tu ordenador.
  4. En la parte final de la página pulsa el botón "cambiar perfil".