以前一直迷惑为什么会有这样的用法 String[] s = (String [])arrayList.toArray(new String[0]),看完API之后才明白,API 片段 如下:
public <T> T[] toArray(T[] a)
If the list fits in the specified array with room to spare (i.e., the array has more elements than the list), the element in the array immediately following the end of the collection is set to null. (This is useful in determining the length of the list only if the caller knows that the list does not contain any null elements.)
a
- the array into which the elements of the list are to be stored, if it is big enough; otherwise, a new array of the same runtime type is allocated for this purpose.
只有当数组a的空间足够大的时候,元素才会放到数组a中去,否则就重新生成一个数组。此例当中,new String[0]的空间不足以存放arrayList中的元素,arrayList中的元素将会存放去数组s。下面的例子方便理解:
import java.util.ArrayList;
/** 题目:有1、2、3、4个数字,能组成多少个互不相同且无重复数字的三位数?都是多少?
*/
public class Classic11 {
public static void main(String args[]){
ArrayList result = new ArrayList(30);
int index = 0;
for(int i =1;i<5;i++)
for(int j =1;j<5;j++)
for(int k =1;k<5;k++)
if((i!=j)&&(i!=k)&&(j!=k))
result.add(i*100+j*10+k);
System.out.println(result.size());
if(!result.isEmpty()){
// Integer[] x =(Integer[]) result.toArray(new Integer[0]);
Integer[] x = new Integer[result.size()];
result.toArray(x);
int counter = 0;
for(int i=0;i<x.length;i++) {
System.out.print(x[i].intValue() + " ");
if((++counter) %4 ==0)
System.out.println("\n");
}
System.out.println("\n"+x.length+" in total!");
}
else
System.out.println("no elements!");
}
}