Foros del Web » Programación para mayores de 30 ;) » Java »

Recorrer un ArrayList de una clase

Estas en el tema de Recorrer un ArrayList de una clase en el foro de Java en Foros del Web. Hola a todos: Estoy empezando a estudiar los Arrays en Java y me he atascado en un punto. Os explico. Tengo una clase llamada Peliculas ...
  #1 (permalink)  
Antiguo 13/12/2011, 05:15
 
Fecha de Ingreso: junio-2007
Mensajes: 298
Antigüedad: 17 años, 5 meses
Puntos: 5
Recorrer un ArrayList de una clase

Hola a todos:

Estoy empezando a estudiar los Arrays en Java y me he atascado en un punto. Os explico. Tengo una clase llamada Peliculas que tiene los atributos anno, titulo y descripcion.

Yo para ir almacenando los datos creo:

private ArrayList array_peliculas=new ArrayList();

public void registrar_pelicula(Pelicula q_pelicula) {
array_peliculas.add(q_peliculas);
}

Mi duda es ¿cómo puedo recorrer todos las películas que he metido en ese array?

Yo hago lo siguiente:

public void show_peliculas() {
for (int i=0;i<=array_peliculas.size();i++) {
System.out.println(array_peliculas.get(i));
}
}

Pero esto me saca cosas raras, yo quisiera poder ir mostrando los datos del anno, del titulo, de la descripción, pero no sé cómo acceder a los atributos de esa clase. He probado poniendo:

System.out.println(array_peliculas.get(i).titulo)

Y también llamando a funciones de esa clase:

System.out.println(array_peliculas.get(i).get_titu lo());

pero nada. No funciona ningún caso. ¿Cómo puedo acceder a los atributos de esa clase?

Muchas gracias
  #2 (permalink)  
Antiguo 13/12/2011, 06:35
 
Fecha de Ingreso: diciembre-2011
Mensajes: 18
Antigüedad: 12 años, 11 meses
Puntos: 2
Sonrisa Respuesta: Recorrer un ArrayList de una clase

Toda clase que crees, hereda un método llamado toString() de la clase Object. Este método, imprime por defecto la referencia de ese objeto, en tu caso, de la clase Pelicula.

Para lo que indicas, suele hacerse lo siguiente:

Código:
ArrayList<Pelicula> array_peliculas=new ArrayList<Pelicula>();

array_peliculas.add(pelicula1);
array_peliculas.add(pelicula2);
array_peliculas.add(pelicula3);

for(int i=0; i<array_peliculas.size(); i++) 
{
  System.out.println(array_peliculas.get(i).anno);
  System.out.println(array_peliculas.get(i).titulo);
  System.out.println(array_peliculas.get(i).descripcion);
  System.out.println("================================");
}
Es importante que pongas el símbolo '<' en lugar de '<='
  #3 (permalink)  
Antiguo 13/12/2011, 06:38
Avatar de Ronruby  
Fecha de Ingreso: julio-2008
Ubicación: 18°30'N, 69°59'W
Mensajes: 4.879
Antigüedad: 16 años, 4 meses
Puntos: 416
Respuesta: Recorrer un ArrayList de una clase

Como no estas usando genericos, debes hacer un casting de cada objeto al tipo correspondiente ya que por defecto se guardan como tipo Object.

Código Javascript:
Ver original
  1. public void show_peliculas() {
  2.   Pelicula peli;
  3.   for (int i=0;i<=array_peliculas.size();i++) {
  4.     peli = (Pelicula) array_peliculas.get(i);
  5.     System.out.println(peli.get_titulo());
  6.   }
  7. }

Sin embargo, te recomiendo a que uses genericos fuertemente. No solo es mas facil, sino que previene errores:
Código Javascript:
Ver original
  1. ArrayList<Pelicula> pelis = new ArrayList<Pelicula>();
  2. //etc...
  3. pelis.add(q_pelicula);
  4. //etc
Usar genericos te permite la ventaja de poder usar un enhanced for o foreach:
Código Javascript:
Ver original
  1. for(Pelicula peli : pelis) {
  2.   System.out.println(peli.get_titulo());
  3. }
Basicamente dice: Para cada objeto en pelis de tipo Pelicula, haz lo siguiente. Donde el objeto actual siempre se le refiere como peli.
  #4 (permalink)  
Antiguo 18/12/2011, 05:44
Avatar de navarone86  
Fecha de Ingreso: octubre-2009
Mensajes: 62
Antigüedad: 15 años, 1 mes
Puntos: 2
Respuesta: Recorrer un ArrayList de una clase

tambien puedes sobreescribir el metodo toString() de tu clase Pelicula

dentro de la clase Pelicula añade el siguiente método (el nombre tiene que ser el mismo):

Código Javascript:
Ver original
  1. public String toString(){
  2.     return "Titulo: " + this.getTitulo() + ", Año: " + this.getAnno() + "Descripción: " + this.getDescripcion();
  3. }

a partir de ahora, cuando hagas System.out.println de un de la clase Pelicula, en lugar de mostrarse la referencia que veías antes, veras los datos en el formato que hayas indicado

Etiquetas: arraylist, clase
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 15:20.