我该如何打印ArrayList "list"中的元素"e"?
ArrayList<Dog> list = new ArrayList<Dog>();
Dog e = new Dog();
list.add(e);
System.out.println(list);
我该如何打印ArrayList "list"中的元素"e"?
ArrayList<Dog> list = new ArrayList<Dog>();
Dog e = new Dog();
list.add(e);
System.out.println(list);
你想要打印整个列表还是想要迭代遍历列表的每个元素?无论哪种方式,为了打印出有意义的内容,你的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
首先确保 Dog
类实现了方法 public String toString()
,然后使用
System.out.println(list.get(index))
其中index是列表中的位置。当然,由于您提供了自己的实现,您可以决定狗如何打印自己。
下面是使用lambda和stream的Java8更新解决方案:
System.out.println(list.stream()
.map(Object::toString)
.collect(Collectors.joining("\n")));
list.stream().forEach(System.out::println);
您的代码要求 Dog
类已经重写了 toString()
方法,以便它知道如何打印自己。否则,您的代码看起来是正确的。
打印特定元素是
list.get(INDEX)
我认为一次性打印整个列表是最好的方法,这也可以避免使用循环。
Arrays.toString(list.toArray())
Dog
类中重写 toString()
方法。当你在 sysout 中使用这个对象时,它将被调用。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