当前位置:首页 > 编程知识 > 正文

用法介绍Java List的toArray方法

List.toArray()方法在Java编程中十分常用。它主要用于将List转换为数组。

一、基本用法和说明

Java中的List接口拥有一个名为toArray的方法,它能够将List转化为一个数组。该方法存在两种形式:

  1. Object[] toArray() : 这个方法返回一个新的Object数组,包含了List中所有的元素。数组的类型是Object,因此,我们需要将它转换为实际的类型。
  2. T[] toArray(T[] arrayToFill) : 这个方法返回一个新的、和提供的数组类型相同的数组,包含List中所有元素。如果List的大小超过了提供的数组的长度,那么会创建一个新的数组,长度和List的大小相同;否则,将在提供的数组中存放List的元素。

List list = new ArrayList();
list.add("A");
list.add("B");
list.add("C");

// 转换为Object类型的数组
Object[] objectArray = list.toArray();
System.out.println(Arrays.toString(objectArray));

// 转换为String类型的数组
String[] stringArray = list.toArray(new String[0]);
System.out.println(Arrays.toString(stringArray));

二、注意事项

在使用 toArray() 方法时,需注意以下几点:

  • 如果 List 中存储的元素为自定义类型,那么在使用 toArray() 时,需要提供该类型的数组,否则会发生 ClassCastException。
  • 如果考虑到性能优化,理论上当 List 的长度超过了原数组长度时,toArray(T[] array) 方法会新建一个同类型和 List 长度相同的数组。但实际JDK源码实现,新创建数组的长度为原数组长度的1.5倍,只有在长度还不足以存储 List 中的所有元素时,才会创建长度相同的新数组。

List list = new ArrayList();
list.add(new Cat("Tom"));
list.add(new Cat("Jerry"));

// 正确的用法
Cat[] cats = list.toArray(new Cat[0]);
System.out.println(Arrays.toString(cats));

// 错误的用法,会抛出ClassCastException
Object[] objects = list.toArray();
Cat[] wrongCats = (Cat[]) objects;