1. 程式人生 > >Java集合的list的addAll異常

Java集合的list的addAll異常

一般情況下,我們將集合A中的內容全部新增到集合B,是這樣的:

        List<String> list1 = new ArrayList<>();
        List<String> list2 = new ArrayList<>();
        list1.add("1");
        list2.add("2");
        list1.addAll(list2);

當然,這樣做之後,執行程式也是完全沒有問題的,但是當我們用這種騷操作時:

        List<String> list1 = Arrays.asList("1","2","3");
        List<String> list2 = Arrays.asList("4","5","6");
        list1.addAll(list2);

就會報出如下錯誤

這種由陣列轉換而來的集合,是我們很多人喜歡貪方便而常有的操作,那麼我們來去看看asList的原始碼,看看錯誤在哪


從原始碼的註釋中可以看到,呼叫asList方法返回的是一個固定大小的集合,所以再往裡新增元素必然會報錯,那麼什麼才是正確的操作呢