import java.util.ArrayList;
import java.util.List;
public class Test {
public static void main(String[] args) {
List integerList = new ArrayList<>();
integerList.add(11);
integerList.add(22);
integerList.add(33);
integerList.add(44);
integerList.add(55);
Integer[] a1 = {1, 2, 3, 4, 5, 6, 7, 8};
Integer[] integers = integerList.toArray(a1);
for (Integer integer : integers) {
System.out.println(integer);
}
}
}
输出了
11
22
33
44
55
null
7
8
jdk1.8 ArrayList toArray 源码 想不通的问题在下面注释里面。
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);
//**我想不通的是,这一行的作用是为什么? 如果大于则置空第size的元素,是提醒调用者,俩个数组的长度必须一致吗?**
if (a.length > size)
a[size] = null;
return a;
}