<T> T[] toArray(T[] a) :该方法返回一个数组,数组元素包含了 List<T> 中的全部元素,数组中的元素顺序和 List<T> 中的元素顺序保持一致。java
该方法声明了类型参数(泛型参数) T ,表明数组元素的类型。请注意,返回值类型 T[] 和参数类型 T[] 是同一种类型,这就说明,参数指定的类型等同了返回值的类型。在本例,咱们的参数指定为 new Person[roster.size()] ,它的类型是一个元素类型为 Person 的数组,这就表明返回值类型也是元素类型为 Person 的数组。数组
List<Person> roster = ... Person[] rosterAsArray = roster.toArray(new Person[roster.size()]);
该方法的参数是 T[] a ,如果 a 的大小可以装得下 List<T> 中的全部元素,该方法的返回值就是 a 。不然,该方法会建立一个新的数组,其类型和 a 保持一致,大小和 List<T> 元素个数保持一致,返回值就是新建立的数组。微信
方法的参数 new Person[roster.size()] ,它的大小恰好是 List<T> 元素的个数,可以装得下 List<T> 中的全部元素,因此,该方法返回值就是数组 new Person[roster.size()] ,无需建立新的数组。该方法的参数是 T[] a ,如果 a 的大小超过 List<T> 中元素的元素个数,剩余的空间会被设置成 null 。code
该方法是基于数组的对象和基于 Collection 的对象( List 是 Collection 的子类)的桥梁,提供了把基于 Collection 的对象转化为基于数组的对象的通道。而且,该方法能够经过指定参数的类型,精确地控制返回值的类型,而不是简单地返回一个元素类型是 Object 类型的数组。参数类型是数组 T[] ,建立数组时,经过指定数组的大小( List<T> 的元素个数有多少,就指定数组的大小有多大),能够有效的避免空间的浪费。对象
更多技术交流,敬请关注微信公众号,扫一扫下方二维码便可关注:io