1、Object[] toArray(): 返回一个包含此集合中所有元素的数组。
List<String> list = new ArrayList<String>();
list.add("betty");
list.add("sweeney");
list.add("钟");
list.add("左");
Object[] obj = list.toArray();
System.out.println(Arrays.toString(obj));
错误:String[] obj = (String[])list.toArray();//类型转化异常
ps:此方法将集合转换为数组,但是返回值类型只能为Object[] 不可进行强制转换
否则会出现java.lang.ClassCastException
2、T[] toArray(T[]);返回包含此集合中所有元素的数组; 返回的数组的运行时类型是指定数组的运行时类型。 如果集合适合指定的数组,则返回其中。 否则,将为指定数组的运行时类型和此集合的大小分配一个新数组。
List<String> list = new ArrayList<String>();
list.add("betty");
list.add("sweeney");
list.add("钟");
list.add("左");
String[] s = new String[10];
String[] str = list.toArray(s);
System.out.println(Arrays.toString(str));
该方法返回包含此list中所有元素的数组,返回的数组的类型(str)和指定数组(s)的类型相同必须相同。
ps:如果你指定的数组s可以容纳list中所有元素,则用list中元素填充该数组,并返回。
反之,返回一个具有指定数组的类型和此list大小相同的新数组。(也就是说就算你指定的数组容量小于list数组的容量,也会返回一个与list大小相同的数组,指定数组容量大于等于0都可以)。
ps:如果指定数组(s)的容量大于了list中元素的容量,有剩余空间,那么数组中紧接着list尾部的那些元素会被设置为null
如下方截图:
解析上述代码: