2010-01-12 116 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