在使用集合时,都习惯性的使用循环遍历其中的每个元素。
想知道集合中的每个元素的信息,是不是必须要循环遍历每个元素呢?
比如在打印日志信息时,有些集合如List需要记录下来,一般都使用循环遍历集合,将集合中的每个元素的信息再记录下来,有没有更简便的方法呢?
对象的信息一般都会使用其toString()方法展示,那么集合的toString()方法又会展示什么信息呢?
下面通过一个简单的程序来探索下:
public class ArrayListTest2 { public static void main(String[] args) { ArrayList list = new ArrayList(); list.add(new Point(1,2)); list.add(new Point(3,4)); for(int i=0;i<list.size();i++){ System.out.println(list.get(i)); } System.out.println(list); //打印list等同于打印其toString()方法。 //System.out.println(list.toString()); } } class Point{ int x, y; Point(int x, int y){ this.x = x; this.y = y; } @Override public String toString() { return "x=" + x + ", y=" + y; } }
当我们不为Point类重写其toString()方法时,我们执行上面的代码,得到的打印结果如下:
my.arraylist.Point@c17164 my.arraylist.Point@1fb8ee3 [my.arraylist.Point@c17164, my.arraylist.Point@1fb8ee3]
但是,当我们为Point类重写其toString()方法时,我们又得到了下面的不同的结果:
x=1, y=2 x=3, y=4 [x=1, y=2, x=3, y=4]
相信通过上面的比较,我们就可以很明显的知道了List的toString()方法都做了哪些事情:
List的toString()方法调用了其存储的每个元素的toString()方法。
结论:当我们实现了需要记录的对象的toString()方法时,并将它们存放入了集合中时,想要打印记录其信息时,可以直接打印记录该集合即可,集合会将存放的每个元素继续打印记录。
原文:http://zlfwmm.blog.51cto.com/5892198/1706168