在 ArrayList 中的特定位置插入對象
一、概述
在本教程中,我們將學習如何在ArrayList
中的特定位置插入對象。
2.例子
如果我們想將一個元素添加到ArrayList
的特定位置,我們可以使用通過實現List<E>
接口提供的add(int index, E element)
方法。這個方法讓我們在特定索引處添加一個元素。
如果索引超出範圍 (index < 0 or index > size()),它也可以拋出IndexOutOfBoundsException
。這意味著如果我們在ArrayList
中只有 4 個項目,我們不能使用它在位置 4 添加項目,因為我們從 0 開始計數。我們必須在這裡使用標準的add(E e)
方法。
首先,我們將創建一個新的ArrayList
並向其添加四個元素:
List<Integer> integers = new ArrayList<>();
integers.add(5);
integers.add(6);
integers.add(7);
integers.add(8);
System.out.println(integers);
這將導致:
現在,如果我們在索引 1 處添加另一個元素:
integers.add(1,9);
System.out.println(integers);
ArrayList 內部將首先移動從給定索引開始的對象:
這是可行的,因為ArrayList
是一個可增長的數組,可以根據需要自動調整容量:
然後在給定索引處添加新項目:
添加特定索引將導致ArrayList
的平均操作性能為 O(n/2) 。例如, LinkedList,
的平均複雜度為 O(n/4),如果索引為 0,則復雜度為 O(1)。因此,如果我們嚴重依賴於在特定位置添加元素,則需要仔細研究LinkedList
。
我們還可以看到元素的順序不再正確。當我們在特定位置手動添加項目時,這是我們經常想要實現的。否則,我們可以使用integers.sort(Integer::compareTo)
再次對ArrayList
進行排序或實現我們自己的Comparator.
3.結論
在本文中,我們討論了add(int index, E element)
方法,因此我們可以在特定位置向ArrayList<E>
添加新元素。我們必須注意保持在ArrayList
的索引範圍內,並確保我們允許正確的對象。
本文中提到的所有代碼片段都可以在 GitHub 上找到。