65.避開基本類型數(shù)組轉換列表的陷阱

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中去了。

最后編輯于
?著作權歸作者所有,轉載或內容合作請聯(lián)系作者
【社區(qū)內容提示】社區(qū)部分內容疑似由AI輔助生成,瀏覽時請結合常識與多方信息審慎甄別。
平臺聲明:文章內容(如有圖片或視頻亦包括在內)由作者上傳并發(fā)布,文章內容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務。

友情鏈接更多精彩內容