牛骨文教育服务平台(让学习变的简单)
博文笔记

ArrayList的toString()方法

创建时间:2010-06-21 投稿人: 浏览次数:4358

这个小程序中为什么输出[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(", ");
    }   
}

声明:该文观点仅代表作者本人,牛骨文系教育信息发布平台,牛骨文仅提供信息存储空间服务。