ArrayList的toString()方法

来源:互联网 发布:好的英语软件 编辑:程序博客网 时间:2024/05/01 17:07

这个小程序中为什么输出[100,200]呢

import java.util.ArrayList;
import java.util.List;
public class Hello {
 public static void main(String[] args) {
  List<Integer> list = new ArrayList<Integer>();
  list.add(100);
  list.add(200); 
  System.out.println(list);
 }
}

找了半天toString方法原来在AbstractCollection类中重写的 , 从ArrayList类的声明public class ArrayList<E> extends AbstractList<E> implements List<E>, RandomAccess, Cloneable, Serializable 中找到 AbstractList  ,从这个类的声明public abstract class AbstractList<E> extends AbstractCollection<E> implements List<E>中找到AbstractCollection ,就在AbstractCollection中重写的toString方法,打开源码可以看到

public String toString() {
    Iterator<E> i = iterator();
    if (! i.hasNext())
      return "[]";

    StringBuilder sb = new StringBuilder();
    sb.append('[');
    for (;;) {
       E e = i.next();
       sb.append(e == this ? "(this Collection)" : e);
       if (! i.hasNext())
          return sb.append(']').toString();
      sb.append(", ");
    }   
}

原创粉丝点击