打印ArrayList元素?

13

我该如何打印ArrayList "list"中的元素"e"?

 ArrayList<Dog> list = new ArrayList<Dog>();
 Dog e = new Dog();
 list.add(e);
 System.out.println(list);
7个回答

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

6

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

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

其中index是列表中的位置。当然,由于您提供了自己的实现,您可以决定狗如何打印自己。


1
我同意,只有附带一份解释的情况下接受反对意见才是合理的。 - mloskot

4

下面是使用lambda和stream的Java8更新解决方案:

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

或者,不将列表连接成一个大字符串:
list.stream().forEach(System.out::println);

2

您的代码要求 Dog 类已经重写了 toString() 方法,以便它知道如何打印自己。否则,您的代码看起来是正确的。


0

打印特定元素是

list.get(INDEX)

我认为一次性打印整个列表是最好的方法,这也可以避免使用循环。

Arrays.toString(list.toArray())


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

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

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接