JAVA List.toArray()

package chapter6;

import java.util.ArrayList;
import java.util.Arrays;
import java.util.List;

public class ListToArray {
	public static void main(String[] args) {
		List list = new ArrayList();
		list.add("zero");
		list.add("one");
		list.add("two");
		list.add("three");
		list.add("four");
		list.add("five");
		
		Object[] array = list.toArray();
		
		String[] array1 = new String[4];
		list.toArray(array1);
		System.out.println(Arrays.asList(array1));
		
		String[] array2 = new String[8];
		list.toArray(array2);
		System.out.println(Arrays.asList(array2));
		
		String[] array3 = new String[list.size()];
		list.toArray(array3);
		System.out.println(Arrays.asList(array3));
	}
}

二话不说先试一下代码

从List源码中分析两个list.Toarry()有何不同

 Object[] toArray();

         一览无遗直接将返回将List返回Object数组。。。

T[] toArray(T[] a);

          这个就比较牛逼了,运用到了泛型,在底层定义了一个泛型方法将返回了一个约束类型的数组,如果传入的数组长度大于集合长度超出范围为null,如果小于长度则全部元素为null.

如果不懂请参考源码:

    public  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;
    }

其中三种长度状态的数组执行时间是不一样的,但是不论怎样当数组长度等于集合大小时,速度永远是最快的。

你可能感兴趣的:(Java)