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));