Arrays 和 Collections 通常用來實現(xiàn)從數(shù)組到列表的轉換數(shù)組和List之間的轉換總結,非常方便,但是使用時還是要小心謹慎。
String[] names = new String[]{"name1","name2","name3"};
int[] ages = {1,3,5};
List nameList = Arrays.asList(names);
List ageList = Arrays.asList(ages);
System.out.println("nameList的大小:"+nameList.size());
System.out.println("ageList的大小:"+ageList.size());
運行結果:
nameList的大小:3
ageList的大小:1
佷顯然,這超出了我們的預期,ageList為什么變成了1?
看源碼分析:
public static <T> List<T> asList(T... a) {
return new ArrayList<>(a);
}
要求傳入的參數(shù)是一個任意參數(shù)的泛型T,注意這里的T表示的是一個類類型,而對于int[] ages = {1,3,5} 很顯然,這是一個基本類型的數(shù)組,之所以在編譯期沒報錯只是因為在這里ages被當成一個數(shù)組類型的單例來看待了。也就是說這里的打印結果1,實際上是這個ages數(shù)組對象被當作了List的元素放到了List中去了。