——- android培训、java培训、期待与您交流! ———-
Object[] toArray()
返回包含此 collection 中所有元素的数组。
T[]
toArray(T[] a)
返回包含此 collection 中所有元素的数组;返回数组的运行时类型与指定数组的运行时类型相同。
import java.util.Collection;
import java.util.ArrayList;
import java.util.Arrays;
public class CollectionToArrayDemo
{
public static void sop(Object obj)
{
System.out.println(obj);
}
public static void main(String[] args)
{
//1 创建存放Integer的集合
ArrayList<Integer> arrList = new ArrayList<Integer>();
//2 添加Integer
arrList.add(new Integer(3));
arrList.add(new Integer(2));
arrList.add(new Integer(6));
arrList.add(new Integer(1));
//3 集合转数组
//Integer[] arr = arrList.toArray();
//错误: 不兼容的类型: Object[]无法转换为Integer[]
Integer[] arr = arrList.toArray(new Integer[arrList.size()]);
//Integer[] arr = arrList.toArray(new Integer[2]);//[3, 2, 6, 1]
//Integer[] arr = arrList.toArray(new Integer[3]);//[3, 2, 6, 1]
//Integer[] arr = arrList.toArray(new Integer[5]);//[3, 2, 6, 1, null]
//Integer[] arr = arrList.toArray(new Integer[7]);//[3, 2, 6, 1, null, null, null]
//4 打印数组
sop(Arrays.toString(arr));
//打印结果[3, 2, 6, 1]
}
}
集合转数组结果
Integer[] arr = arrList.toArray(new Integer[arrList.size()]);//[3, 2, 6, 1]
//Integer[] arr = arrList.toArray(new Integer[2]);//[3, 2, 6, 1]
//Integer[] arr = arrList.toArray(new Integer[3]);//[3, 2, 6, 1]
//Integer[] arr = arrList.toArray(new Integer[5]);//[3, 2, 6, 1, null]
//Integer[] arr = arrList.toArray(new Integer[7]);//[3, 2, 6, 1, null, null, null]
综上可知,
当数组初始化长度小于等于指定数组size时候,数组长度会自动变为size;
当数组初始化长度大于指定数组size时候,就使用传进来的那个数组;
1,指定类型的数组到底要定义多长呢?
当指定类型的数组长度小于了集合的size,那么该方法内部会创建一个新的数组。长度为集合的size。
当指定类型的数组长度大于了集合的size,就不会新创建了数组。而是使用传递进来的数组。
所以创建一个刚刚好的数组最优。
2,为什么要将集合变数组?
为了限定对元素的操作。不需要进行增删了。