2010-01-12 121 views
10

如何在ArrayList“list”中打印元素“e”?print arraylist元素?

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

的System.out.println(E); – 2010-01-12 06:46:32

回答

12

是要打印整个列表还是要遍历列表中的每个元素?无论哪种方式打印任何有意义的东西,Dog类需要覆盖Object类的toString()方法(如其他答案中所述)以返回有效结果。

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; 
     } 
    } 
} 

这段代码的输出是:

[Tommy, tiger] 
Tommy 
tiger 
2

你的代码要求Dog类已覆盖了toString()方法,以便它知道如何将自己打印出来。否则,你的代码看起来正确。

6

首先确保Dog类实现方法public String toString()然后用

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

其中index是列表中的位置。当然,因为你提供你的实施,你可以决定狗如何打印自己。

+1

我真的很想知道为什么人们downvote没有任何解释.. – Jack 2010-01-12 13:38:50

+1

我同意接受downvotes只是一起解释一词是合理的。 – mloskot 2010-01-26 01:50:38

0

你应该在你Dog类中重写toString()方法。当你在sysout中使用这个对象时会调用它。

2

这里是Java8更新的解决方案,使用lambda表达式和流:

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

或者不加入该列表为一个大字符串:

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

打印特定元素是

list.get(INDEX) 

我认为最好的方法是一次打印整个列表,这也将避免把一个环

Arrays.toString(list.toArray())

0

如果要打印与整数一个ArrayList,因为你可以使用下面的代码的例子。

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); 
     } 
    } 
} 

输出是上述代码:

0 
1 
2 
3 
4 
5 
6 
7 
8 
9 
10