ArrayList 源码分析_JAVA_编程开发_程序员俱乐部

中国优秀的程序员网站程序员频道CXYCLUB技术地图
热搜:
更多>>
 
您所在的位置: 程序员俱乐部 > 编程开发 > JAVA > ArrayList 源码分析

ArrayList 源码分析

 2012/4/24 17:13:39  czj4451  程序员俱乐部  我要评论(0)
  • 摘要:1.toArray方法将ArrayList实例中的所有元素拷贝到一个数组中如果目标数组的长度小于ArrayList的长度,则根据数组的类型生成一个新的数组并拷贝;否则就调用System.arraycopy方法复制数据,如果目标数组的长度大于ArrayList的长度,数组中在list后面的第一个位置被赋为null。public<T>T[]toArray(T[]a){if(a.length<size)//Makeanewarrayofa'sruntimetype
  • 标签:list 源码 分析
1. toArray方法

将ArrayList实例中的所有元素拷贝到一个数组中

如果目标数组的长度小于ArrayList的长度,则根据数组的类型生成一个新的数组并拷贝;
否则就调用System.arraycopy方法复制数据,如果目标数组的长度大于ArrayList的长度,数组中在list后面的第一个位置被赋为null。

    public <T> T[] toArray(T[] a) {
        if (a.length < size)
            // Make a new array of a's runtime type, but my contents:
            return (T[]) Arrays.copyOf(elementData, size, a.getClass());
	System.arraycopy(elementData, 0, a, 0, size);
        if (a.length > size)
            a[size] = null;
        return a;
    }


测试代码:

	ArrayList list = new ArrayList();
	list.add("Disable");
	list.add("the");
	list.add("current");
	list.add("thread");

	String[] array = new String[3];
	//String[] array = new String[4];
	//String[] array = new String[6];
	String[] arrayCopy = (String[])list.toArray(array);
	// when 3: false
	// when 4, 6: true
	System.out.println(arrayCopy == array);
	// when 3, 4: ["Disable", "the", "current", "thread"]
	// when 6: ["Disable", "the", "current", "thread", null, null]
	System.out.println(Arrays.toString(arrayCopy));
发表评论
用户名: 匿名