一、addAll方法簡述
ArrayList是Java中常用的集合類之一,其提供了一系列的方法用於操作集合元素。其中的addAll方法用於向指定元素集合中添加一組元素,返回一個boolean類型值,表示是否添加成功。具體用法如下:
ArrayList list1 = new ArrayList(); ArrayList list2 = new ArrayList(); // 向list1中批量添加元素 list1.addAll(Arrays.asList("A", "B", "C")); // 將list1中的元素添加到list2中 list2.addAll(list1); // 列印list2內容 System.out.println("list2:" + list2);
在以上代碼中,我們創建了兩個ArrayList對象list1和list2,分別向list1中添加了三個元素,然後通過list2的addAll方法將list1中的元素添加到了list2中,最後輸出list2的內容。執行結果如下:
list2:[A, B, C]
二、addAll方法原理
我們來看一下ArrayList的源碼,查看addAll方法的實現:
public boolean addAll(Collection c) { Object[] a = c.toArray(); int numNew = a.length; ensureCapacityInternal(size + numNew); // Increments modCount System.arraycopy(a, 0, elementData, size, numNew); size += numNew; return numNew != 0; }
從源碼中我們可以看到,addAll方法的實現主要分為以下幾個步驟:
1、將Collection轉換為數組;
2、根據要添加的元素數量自動擴容;
3、將數組中的元素添加到ArrayList的元素數組中;
4、更新ArrayList的元素數量;
5、返回添加是否成功。
三、addAll方法的使用場景
addAll方法的使用主要在以下幾個場景中:
1、使用數組批量初始化ArrayList。
addAll方法可以將一個數組中的值全部添加到ArrayList中,用於批量初始化ArrayList,代碼如下:
String[] array = {"A", "B", "C"}; ArrayList list = new ArrayList(); list.addAll(Arrays.asList(array));
2、使用一個ArrayList初始化另一個ArrayList。
addAll方法可以將一個ArrayList中的元素全部添加到另一個ArrayList中,實現兩個ArrayList的合併,代碼如下:
ArrayList list1 = new ArrayList(); ArrayList list2 = new ArrayList(); list1.addAll(Arrays.asList("A", "B", "C")); list2.addAll(list1);
3、使用一個鏈表初始化ArrayList。
addAll方法可以將LinkedList鏈表中的元素全部添加到ArrayList中,實現鏈錶轉ArrayList,代碼如下:
LinkedList linkedList = new LinkedList(); ArrayList list = new ArrayList(); linkedList.add("A"); linkedList.add("B"); linkedList.add("C"); list.addAll(linkedList);
四、addAll方法注意事項
在使用addAll方法時需要注意以下幾個問題:
1、元素類型需要匹配
addAll方法的參數需要是一個Collection類型的對象,其中Collection中元素的類型需要和ArrayList中元素的類型匹配,否則會拋出ClassCastException異常。
ArrayList list1 = new ArrayList(); ArrayList list2 = new ArrayList(); list1.addAll(Arrays.asList(1, 2, 3)); list2.addAll(Arrays.asList("A", "B", "C")); // 拋出ClassCastException異常
2、addAll方法數組與Collection的區別
當使用數組作為addAll的參數時,數組中的元素會直接被添加到ArrayList中;而當使用Collection類型的對象作為addAll的參數時,addAll方法將創建一個新的數組,在新的數組中對傳入的Collection類型的對象進行遍歷,同時將遍歷到的元素賦給新數組的對應位置,最終再將新數組中的所有元素添加到ArrayList中。
String[] array = {"A", "B", "C"}; ArrayList list1 = new ArrayList(); ArrayList list2 = new ArrayList(); list1.addAll(Arrays.asList(array)); // 直接將數組中的元素添加到ArrayList中 list2.addAll(Arrays.asList(array)); // 先創建一個新的數組再將遍歷到的元素添加到數組中,最後添加到ArrayList中
3、addAll方法為空集合的處理
當addAll方法的參數為空集合時,不會有任何變化,返回false。
ArrayList list = new ArrayList(); list.addAll(new ArrayList()); // 不會有任何變化,返回false
五、總結
通過本文,我們詳細的闡述了ArrayList的addAll方法,包括方法的簡述、原理、使用場景和注意事項。需要特別注意的是,在使用addAll方法時,我們需要注意元素類型需要匹配,同時注意addAll方法對於數組與Collection類型的處理區別,加強對addAll方法的了解可為我們的編程工作帶來更多的便利。
原創文章,作者:小藍,如若轉載,請註明出處:https://www.506064.com/zh-tw/n/227552.html