方式一:无参
toArray() 的 API 讲解:
Object[] toArray()
返回一个包含此集合中所有元素的数组。 如果此集合对其迭代器返回的元素的顺序做出任何保证,则此方法必须以相同的顺序返回元素。
返回的数组将是“安全的”,因为该集合不保留对它的引用。 (换句话说,这个方法必须分配一个新的数组,即使这个集合是由数组支持的)。 因此,调用者可以自由地修改返回的数组。
此方法充当基于阵列和基于集合的API之间的桥梁。
结果
一个包含此集合中所有元素的数组,注意:返回值的是Object类型的数组
样例:
Object[] strs = objectist.toArray();
方式二:有参
toArray(T[] a) 的 API 讲解:
T[] toArray(T[] a)
返回包含此集合中所有元素的数组; 返回的数组的运行时类型是指定数组的运行时类型。 如果集合适合指定的数组,则返回其中。 否则,将为指定数组的运行时类型和此集合的大小分配一个新数组。
如果此集合适合指定的数组,并具有剩余空间(即,该数组具有比此集合更多的元素),则紧跟在集合结束后的数组中的元素将设置为null 。 ( 仅当调用者知道此集合不包含任何null元素时,这才有助于确定此集合的长度。)
如果此集合对其迭代器返回的元素的顺序做出任何保证,则此方法必须以相同的顺序返回元素。
像toArray()方法一样,此方法充当基于数组和基于集合的API之间的桥梁。 此外,该方法允许精确地控制输出阵列的运行时类型,并且在某些情况下可以用于节省分配成本。
假设x是一个已知只包含字符串的集合。 以下代码可用于将集合转储到新分配的数组中: String :
String[] y = x.toArray(new String[0]);
请注意, toArray(new Object[0])的功能与toArray()相同 。
参数类型
T - 包含集合的数组的运行时类型
参数
a - 要存储此集合的元素的数组,如果它足够大; 否则,为此目的分配相同运行时类型的新数组。
结果
一个包含此集合中所有元素的数组
样例:
String[] strs = stringList.toArray(new String[0]);
注意:
当toArray后面的数组参数长度比stringList列表的长度 短 时,会重新开一个新的数组,新数组长度与stringList元素个数相同,将stringList的元素放进新的数组空间中;
当toArray后面的数组参数长度与stringList列表的长度 相同 时,会将stringList里的元素都放进该数组中,不开新数组;
当toArray后面的数组参数长度比stringList列表的长度 长 时,会将stringList里的元素都放进去,剩下的位置用null填充
本文详细介绍了Java中Collection类的toArray()方法的两种使用方式:无参和有参。无参的toArray()会返回一个新的安全的数组,而有参的toArray(T[] a)则允许精确控制输出数组的类型,并根据传入数组的长度决定是否新分配数组。通过样例代码,展示了不同情况下的行为,如数组长度短于、等于或长于集合元素数量时的效果。

238

被折叠的 条评论
为什么被折叠?



