【发布时间】:2010-01-12 06:00:55
【问题描述】:
如何将arraylist“list”中的元素“e”打印出来?
ArrayList<Dog> list = new ArrayList<Dog>();
Dog e = new Dog();
list.add(e);
System.out.println(list);
【问题讨论】:
标签: java
如何将arraylist“list”中的元素“e”打印出来?
ArrayList<Dog> list = new ArrayList<Dog>();
Dog e = new Dog();
list.add(e);
System.out.println(list);
【问题讨论】:
标签: java
您是要打印整个列表还是要遍历列表的每个元素?无论哪种方式打印任何有意义的内容,您的 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 是列表中的位置。当然,既然你提供了你的实现,你就可以决定狗如何打印自己。
【讨论】:
这里是 Java8 的更新解决方案,使用 lambdas 和流:
System.out.println(list.stream()
.map(Object::toString)
.collect(Collectors.joining("\n")));
或者,不将列表加入一个大字符串:
list.stream().forEach(System.out::println);
【讨论】:
您的代码要求Dog 类已覆盖toString() 方法,以便它知道如何将自己打印出来。否则,您的代码看起来是正确的。
【讨论】:
您应该在 Dog 类中覆盖 toString() 方法。当你在 sysout 中使用这个对象时会调用它。
【讨论】:
打印特定元素是
list.get(INDEX)
我认为一次性打印整个列表的最佳方法,这也可以避免循环
Arrays.toString(list.toArray())
【讨论】:
如果你想打印一个带有整数的数组列表,例如你可以使用下面的代码。
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
【讨论】: