toArray(T [] a)和toArray()之间的区别

Log*_*gos 8 java list toarray

我一直在学习如何使用java进行编程,而且我没有对LinkedLists toArray(T[] a)toArray()方法的区别做出任何明确的解释.第二个只是将LinkedList对象中的所有元素作为数组返回,对吧?但是,第一个怎么样?

编辑:

我的意思是,我从oracle阅读文档,它说:

以适当的顺序返回包含此列表中所有元素的数组(从第一个元素到最后一个元素); 返回数组的运行时类型是指定数组的运行时类型.如果列表适合指定的数组,则返回其中.否则,将使用指定数组的运行时类型和此列表的大小分配新数组.如果列表适合指定的数组,并且空间足够(即,数组的元素多于列表),则紧跟在列表末尾的数组中的元素将设置为null.(仅当调用者知道列表不包含任何null元素时,这在确定列表长度时很有用.)

与toArray()方法一样,此方法充当基于数组的API和基于集合的API之间的桥梁.此外,该方法允许精确控制输出阵列的运行时类型,并且在某些情况下可以用于节省分配成本.

我不明白以粗体显示的句子的含义.

Roh*_*ain 17

假设你有一个List<String>,并且想要将其转换为String[].让我们看看两种方法的工作原理:

List<String> source = new LinkedList<String>();
// Fill in some data

Object[] array1 = source.toArray();
String[] array2 = source.toArray(new String[source.size()]);
Run Code Online (Sandbox Code Playgroud)

看到不同?第一个只是创建一个Object[],因为它不知道类型参数的类型<T>,而第二个只是填满String[]你传递的(这是你想要的).您几乎总是需要使用第二种方法.

  • 那么使用`String [] array3 =(String [])source.toArray();`?我认为这是不推荐的,但为什么不呢? (3认同)
  • 使用 toArray(new String[0])。见 /sf/ask/12186541/ (2认同)