有时候我们希望把一个Collection
转换成一个数组,Collection
提供了toArray
方法。toArray
是一个重载方法,其中无参数版本返回的是Object数组,很明显通常情况下这不是我们想要的结果。我们希望返回目标类型的数据,另一个方法可以返回实现:
// 这里以ArrayList#<T> T[] toArray(T[] a);为例
public class Pet{
public static void main(String... args) {
List<Pet> petList = new ArrayList();
for(int i = 0; i < 10; i++) {
Pet pet = new Pet();
petList.add(pet);
}
Pet[] petArray = petList.toArray(new Pet[0]);
}
}
使用上面的Pet[] petArray = petList.toArray(new Pet[0]);
即可。
有兴趣的同学也可以读读toArray
的源码,最终的实现转化成数组的方法是
System.arrayCopy
方法,之前再一次电话面试的时候,就问过我这个问题,我没打上来。。。