LinkedList-常用方法以及雙向連結串列的理解
阿新 • • 發佈:2021-10-10
連結串列是一種物理儲存單元上非連續、非順序的儲存結構。
連結串列
連結串列是一種物理儲存單元上非連續、非順序的儲存結構,資料元素的邏輯順序是通過連結串列中的指標連結次序實現的。 連結串列由一系列結點(連結串列中每一個元素稱為結點)組成,結點可以在執行時動態生成。每個結點包括兩個部分:一個是儲存資料元素的資料域,另一個是儲存下一個結點地址的指標域。 由於不必須按順序儲存,連結串列在插入的時候可以達到O(1)的複雜度。與陣列相比
優點: 插入資料快 不需要預先知道資料大小 可以充分利用計算機記憶體空間 缺點: 隨機讀取速度慢,定址花時間 空間開銷比較大,因為增加了結點的指標域雙向連結串列
雙向連結串列示意圖:
在頭部新增元素:
操作邏輯:新頭部元素的nest指向就頭部元素的地址,舊頭部元素的prev指向新頭部元素的地址
在尾部新增元素:
操作邏輯:新尾部元素的prev指向舊尾部元素的地址,舊尾部元素的nest指向新尾部元素的地址
在非頭尾處新增元素:
操作邏輯:插入元素的prev指向前面元素的地址,插入元素的nest指向後面元素的地址
LinkedList
Java中的linkedList底層正是使用了雙向連結串列結構。
LinkedList 繼承了 AbstractSequentialList 類,實現了 List 介面,此外也實現了Queue、Cloneable、Serializable 等介面。
提供的常用方法
方法 | 描述 |
---|---|
public boolean add(E e) | 連結串列末尾新增元素,返回是否成功,成功為 true,失敗為 false。 |
public void add(int index, E element) | 向指定位置插入元素。 |
public boolean addAll(Collectionc) | 將一個集合的所有元素新增到連結串列後面,返回是否成功,成功為 true,失敗為 false。 |
public boolean addAll(int index, Collectionc) | 將一個集合的所有元素新增到連結串列的指定位置後面,返回是否成功,成功為 true,失敗為 false。 |
public void addFirst(E e) | 元素新增到頭部。 |
public void addLast(E e) | 元素新增到尾部。 |
public boolean offer(E e) | 向連結串列末尾新增元素,返回是否成功,成功為 true,失敗為 false。 |
public boolean offerFirst(E e) | 頭部插入元素,返回是否成功,成功為 true,失敗為 false。 |
public boolean offerLast(E e) | 尾部插入元素,返回是否成功,成功為 true,失敗為 false。 |
public void clear() | 清空連結串列。 |
public E removeFirst() | 刪除並返回第一個元素。 |
public E removeLast() | 刪除並返回最後一個元素。 |
public boolean remove(Object o) | 刪除某一元素,返回是否成功,成功為 true,失敗為 false。 |
public E remove(int index) | 刪除指定位置的元素。 |
public E poll() | 刪除並返回第一個元素。 |
public E remove() | 刪除並返回第一個元素。 |
public boolean contains(Object o) | 判斷是否含有某一元素。 |
public E get(int index) | 返回指定位置的元素。 |
public E getFirst() | 返回第一個元素。 |
public E getLast() | 返回最後一個元素。 |
public int indexOf(Object o) | 查詢指定元素從前往後第一次出現的索引。 |
public int lastIndexOf(Object o) | 查詢指定元素最後一次出現的索引。 |
public E peek() | 返回第一個元素。 |
public E element() | 返回第一個元素。 |
public E peekFirst() | 返回頭部元素。 |
public E peekLast() | 返回尾部元素。 |
public E set(int index, E element) | 設定指定位置的元素。 |
public Object clone() | 克隆該列表。 |
public IteratordescendingIterator() | 返回倒序迭代器。 |
public int size() | 返回連結串列元素個數。 |
public ListIteratorlistIterator(int index) | 返回從指定位置開始到末尾的迭代器。 |
public Object[] toArray() | 返回一個由連結串列元素組成的陣列。 |
publicT[] toArray(T[] a) | 返回一個由連結串列元素轉換型別而成的陣列。 |