更新時間:2022-03-22 來源:黑馬程序員 瀏覽量:
ArrayList集合在查詢元素時速度很快,但在增刪元素時效率較低,為了克服這種局限性,可以使用List接口的另一個實現類LinkedList。LinkedList集合內部包含有兩個Node類型的first和last屬性維護一個雙向循環鏈表,在鏈表中的每一個元素都使用引用的方式來記住它的前一個元素和后一個元素,從而可以將所有的元素彼此連接起來。當插入一個新元素時,只需要修改元素之間的這種引用關系即可,刪除一個節點也是如此。正因為這樣的存儲結構,所以LinkedList集合對于元素的增刪操作表現出很高的效率,LinkedList集合添加元素和刪除元素的過程如圖所示。
在圖6-5中,通過兩張圖描述了LinkedList集合新增元素和刪除元素的過程。其中,左圖為新增一個元素,圖中的元素1和元素2在集合中彼此為前后關系,在它們之間新增一個元素時,只需要讓元素1記住它后面的元素是新元素,讓元素2記住它前面的元素為新元素就可以了。右圖為刪除元素,要想刪除元素1和元素2之間的元素3,只需要讓元素1與元素2變成前后關系就可以了。LinkedList集合除了從接口Collection和List中繼承并實現了集合操作方法外,還專門針對元素的增刪操作定義了一些特有的方法,如下所示。
方法聲明 | 功能描述 |
void add(int index, E element | 在此列表中指定的位置插入指定的元素。 |
void addFirst(Object o) | 將指定元素插入集合的開頭 |
void addLast(Object o) | 將指定元素添加到集合的結尾 |
Object getFirst(O | 返回集合的第一個元素 |
Object getLast() | 返回集合的最后一個元素 |
Object removeFirst() | 移除并返回集合的第一個元素 |
Object removeLast() | 移除并返回集合的最后一個元素 |
boolean offer(Object o) | 將指定元素添加到集合的結尾 |
boolean offerFirst(Object o) | 將指定元素添加到集合的開頭 |
boolean offerLast(Object o) | 將指定元素添加到集合的結尾 |
Object peek() | 獲取集合的第一個元素 |
Object peekFirst() | 獲取集合的第一個元素 |
Object peekLast( | 獲取集合的最后一個元素 |
Object poll(0 | 移除并返回集合的第一個元素 |
Object pollFirst() | 移除并返回集合的第一個元素 |
Object pollLast() | 移除并返回集合的最后一個元素 |
void push(Object o) | 將指定元素添加到集合的開頭 |
Object pop0 | 移除并返回集合的第一個元素 |
上表中,列出的方法主要針對集合中的元素進行增加、刪除和獲取操作,接下來通過一個案例來學習LinkedList中常用方法的使用,如文件所示。
文件Example02.java
import java.util.LinkedList; public class Example02 { 3 public static void main(String[] args) { // 創建LinkedList集合 LinkedList link = new LinkedList(); // 1、添加元素 link.add("stu1"); link.add("stu2"); System.out.println(link); // 輸出集合中的元素 link.offer("offer"); // 向集合尾部追加元素 link.push("push"); // 向集合頭部添加元素 System.out.println(link); // 輸出集合中的元素 // 2、獲取元素 Object object = link.peek(); //獲取集合第一個元素 System.out.println(object); // 輸出集合中的元素 // 3、刪除元素 link.removeFirst(); // 刪除集合第一個元素 link.pollLast(); // 刪除集合最后一個元素 System.out.println(link); 20 } 21 }
運行結果如下圖所示。
在文件Example02.java首先創建了一個LinkedList集合,接著分別使用add()、offer()、push()方法向集合中插入元素,然后使用peek()方法獲取了集合的第一個元素,最后分別使用removeFirst()、pollLast()方法將集合中指定位置的元素移除,這樣就完成了元素的增、查、刪操作。由此可見,使用LinkedList對元素進行增刪操作是非常便捷的。