我一直在学习如何使用java编程,我对LinkedList
的{{1}}和toArray(T[] a)
方法的区别没有任何明确的解释。第二个只是将LinkedList对象中的所有元素作为数组返回,对吧?但是,第一个呢?
编辑:
我的意思是,我从oracle阅读文档,它说:
返回一个包含此列表中所有元素的数组 序列(从第一个到最后一个元素);运行时的类型 返回的数组是指定数组的数组。 如果列表适合 指定的数组,在其中返回。否则,一个新的数组是 分配了指定数组的运行时类型和大小 这个清单。如果列表适合指定的数组,并且有空余空间 (即,数组中的元素多于列表),元素中的元素 紧跟在列表末尾之后的数组设置为null。 (这个 仅在调用者时才有助于确定列表的长度 知道该列表不包含任何null元素。)
与toArray()方法类似,此方法充当桥之间的桥梁 基于数组和基于集合的API。此外,该方法允许 精确控制输出数组的运行时类型,并且可以, 在某些情况下,用于节省分配成本。
我不明白以粗体显示的句子的含义。
答案 0 :(得分:13)
假设您有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()]);
看到区别?第一个只是创建一个Object[]
,因为它不知道类型参数<T>
的类型,而第二个只是填满你通过的String[]
(这就是你想)。你几乎总是需要使用第二种方法。
答案 1 :(得分:2)
有两点不同:
T[]
,而第二个返回Object[]