Java中的集合
Java LinkedList指南
Java ArrayList指南
Java中不可變的ArrayList
CopyOnWriteArrayList指南
JavaJava中的多維ArrayList
將迭代器轉換為列表
Java –從列表中獲取隨機項目/元素
用Java對列表進行分區
從Java列表中刪除所有Null
從Java中的列表中刪除所有重複項
檢查Java中兩個列表是否相等
如何使用Java在列表中查找元素
Java列表UnsupportedOperationException
將列表複製到Java中的另一個列表
從列表中刪除所有出現的特定值
將多個元素添加到Java ArrayList
從列表中刪除第一個元素
在Java中迭代列表的方法
Java中兩個列表的交集
如何計算Arraylist中的重複元素
查找Java中兩個列表之間的差異
從列表中刪除第一個元素
1.概述
在這個超級快速的教程中,我們將展示如何從List
刪除第一個元素。
我們將對List
接口的兩個常見實現執行此操作ArrayList
和LinkedList
。
2.創建一個List
首先,讓我們填充List
:
@Before
public void init() {
list.add("cat");
list.add("dog");
list.add("pig");
list.add("cow");
list.add("goat");
linkedList.add("cat");
linkedList.add("dog");
linkedList.add("pig");
linkedList.add("cow");
linkedList.add("goat");
}
3. ArrayList
其次,讓我們從ArrayList,
刪除第一個元素ArrayList,
並確保我們的列表不再包含它:
@Test
public void givenList_whenRemoveFirst_thenRemoved() {
list.remove(0);
assertThat(list, hasSize(4));
assertThat(list, not(contains("cat")));
}
如上所示,我們正在使用remove(index)
方法刪除第一個元素-這也適用於List
接口的任何實現。
4. LinkedList
LinkedList
還實現了remove(index)
方法(以其自己的方式),但它也具有removeFirst()
方法。
讓我們確保它能按預期工作:
@Test
public void givenLinkedList_whenRemoveFirst_thenRemoved() {
linkedList.removeFirst();
assertThat(linkedList, hasSize(4));
assertThat(linkedList, not(contains("cat")));
}
5.時間複雜度
儘管這些方法看起來很相似,但是它們的效率卻有所不同。 ArrayList
的remove()
方法需要O(n)時間,而LinkedList
的removeFirst()
方法需要O(1)時間。
這是因為ArrayList
在ArrayList
使用數組,而remove()
操作需要將數組的其餘部分複製到開頭。數組越大,需要移動的元素越多。
與此不同, LinkedList
使用指針,這意味著每個元素都指向下一個和上一個。
因此,刪除第一個元素意味著只更改指向第一個元素的指針。此操作總是需要相同的時間,而不取決於列表的大小。
六,結論
在本文中,我們介紹瞭如何從List,
刪除第一個元素List,
並比較了ArrayList
和LinkedList
實現的此操作的效率。
像往常一樣,完整的源代碼可以在GitHub上找到。