我想把list 转成数组
ADTO[] result = (ADTO[])list.toArray(new ADTO[5]);
我发现toArray方法的参数无论写new ADTO[5]还是写new ADTO[4],或new ADTO[2],或new ADTO[0]结果都一样的。这是为什么呢?下面是具体的代码:
import java.util.ArrayList;
import java.util.List;
public class HelloWorld{
public static void main(String[] args){
HelloWorld h = new HelloWorld();
h.exercise();
}
private int exercise(){
List list = createList();
for(int i=0;i <10;i++){
ADTO aDTO = new ADTO();
aDTO.setName(String.valueOf(i+ "fuck "));
list.add(aDTO);
}
ADTO[] result = (ADTO[])list.toArray(new ADTO[0]);
for(int i=0;i <result.length;i++){
System.out.println(result[i].getName());
}
return 0;
}
private List createList(){
return new ArrayList();
}
}
class ADTO{
private String name;
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
}
另外toArray的另一种重载方式toArray(),里面不用些任何参数,这种用法我一直没有试出来。
------解决方案--------------------
问题1:toArray方法的参数无论写new ADTO[5]还是写new ADTO[4],他会先找新new的数组是否满足toArray转换后的长度。如果太小,则重新分配个大小合适的;如果太大,则多余部份都为null;
问题2:那种不还参数的toArray()是list转成Object[]的数组,所以只能用Object中的方法了。