一、 List.toArray()方法的定义
在Java中,List是一个非常重要的数据结构。它提供了一种有序且可重复的集合。而toArray()方法便是List接口定义的方法之一,它可以将List集合转换成一个数组
public Object[] toArray()
toArray()方法不需要传入任何参数,它会返回一个Object类型的数组。由于数组无法动态扩容,该方法返回的类型为Object[],而非T[],T表示泛型类型。
二、 List.toArray()方法的使用
下面我们通过代码,来说明如何使用toArray()方法:
List<String> list = new ArrayList<>();
list.add("java");
list.add("c");
list.add("python");
Object[] array1 = list.toArray();
// 输出结果:[Ljava.lang.Object;@7f63425a
System.out.println(array1);
String[] array2 = list.toArray(new String[0]);
// 输出结果:[java, c, python]
System.out.println(Arrays.toString(array2));
如上述代码所示,我们可以通过以下两种方式使用toArray()方法:
- 不传入任何参数
- 传入一个指定类型的空数组
使用第一种方式时,返回一个Object类型的数组;使用第二种方式时,返回一个泛型类型的数组。如果传入的数组足够大,可以存储List中的所有元素,则将集合中的元素全部拷贝至输入数组中返回。如果传入的数组大小小于List的大小,则返回一个新的数组,其长度等于List的大小。
三、 List.toArray()方法的注意事项
调用toArray方法时需要注意以下几点:
1、要求输入的数组类型正确
toArray方法返回的数组类型由传入参数的类型来确定,如果传入的数组类型不是正确的类型,则可能会导致ClassCastException异常。
2、传入的数组长度合适
如果传入的数组不够大,无法存储List中的所有元素,则toArray()方法会创建一个新的数组返回,其包含所有元素。如果传入的数组过大,则该方法只会在数组中存储List中的元素,并将其余位置置为null。
我们可以通过下面代码来验证传入数组过大的情况:
String[] array3 = new String[6];
String[] array4 = list.toArray(array3);
// 输出结果:[java, c, python, null, null, null]
System.out.println(Arrays.toString(array4));
以上代码中,我们定义了一个长度为6的数组,实际上List中只有3个元素。所以toArray()方法只会将List中的元素拷贝到数组中,而其余位置被设置为null。
3、传入null数组
如果传入null数组,则toArray()方法会新建一个数组来存储List中的元素。传入null数组的代码如下所示:
String[] array5 = null;
String[] array6 = list.toArray(array5);
// 输出结果:[java, c, python]
System.out.println(Arrays.toString(array6));
4、toArray()方法永远不会返回null
如果List中的元素为空,则toArray()方法会返回一个长度为0的数组。
通过上述代码示例和注意事项,我们可以很好的理解List.toArray()方法的使用和注意事项。