2010-01-12 23 views
10

¿Cómo imprimo el elemento "e" en la "lista" del arraylist?¿imprime el elemento del arraylist?

ArrayList<Dog> list = new ArrayList<Dog>(); 
Dog e = new Dog(); 
list.add(e); 
System.out.println(list); 
+3

System.out.println (e); –

Respuesta

12

¿Desea imprimir toda la lista o desea repetir cada elemento de la lista? De cualquier manera para imprimir cualquier cosa significativa, su clase Dog necesita anular el método toString() (como se menciona en otras respuestas) de la clase Object para devolver un resultado válido.

public class Print { 
    public static void main(final String[] args) { 
     List<Dog> list = new ArrayList<Dog>(); 
     Dog e = new Dog("Tommy"); 
     list.add(e); 
     list.add(new Dog("tiger")); 
     System.out.println(list); 
     for(Dog d:list) { 
      System.out.println(d); 
      // prints [Tommy, tiger] 
     } 
    } 

    private static class Dog { 
     private final String name; 
     public Dog(final String name) { 
      this.name = name; 
     } 

     @Override 
     public String toString() { 
      return name; 
     } 
    } 
} 

La salida de este código es:

[Tommy, tiger] 
Tommy 
tiger 
2

Su código requiere que la clase Dog ha anulado el método toString() para que sepa cómo imprimir por sí mismo. De lo contrario, tu código parece correcto.

6

En primer lugar asegúrese de que Dog clase implementa el método public String toString() a continuación, utilizar

System.out.println(list.get(index)) 

donde el índice es la posición dentro de la lista. Por supuesto, desde que proporciona su implementación puede decidir cómo se imprime el perro.

+1

Me gustaría saber por qué las personas votaron negativamente por una explicación ... – Jack

+1

Estoy de acuerdo en que sería razonable aceptar votos abajo solo junto con una palabra de explicación. – mloskot

0

Debe anular toString() método en su clase Dog. que se invocará cuando uses este objeto en sysout.

2

Aquí es una solución actualizada para Java8, el uso de lambdas y arroyos:

System.out.println(list.stream() 
         .map(Object::toString) 
         .collect(Collectors.joining("\n"))); 

O, sin unirse a la lista en una gran cadena:

list.stream().forEach(System.out::println); 
0

Impresión de un elemento específico es

list.get(INDEX) 

Creo que la mejor manera de imprimir toda la lista de una vez y esto también evitará poner un bucle

Arrays.toString (list.toArray())

0

Si desea imprimir un ArrayList con números enteros, como ejemplo se puede utilizar a continuación código.

class Test{ 
    public static void main(String[] args){ 
     ArrayList<Integer> arraylist = new ArrayList<Integer>(); 

     for(int i=0; i<=10; i++){ 
      arraylist .add(i); 
     } 
     for (Integer n : arraylist){ 
      System.out.println(n); 
     } 
    } 
} 

La salida está por encima de código:

0 
1 
2 
3 
4 
5 
6 
7 
8 
9 
10 
Cuestiones relacionadas