Collection中 Object[] toArray()和 T[] toArray(T[])方法

1、Object[] toArray(): 返回一个包含此集合中所有元素的数组。

        List list = new ArrayList();
		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 list = new ArrayList();
		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
如下方截图:

解析上述代码: 

 

你可能感兴趣的:(java)