更新時(shí)間:2022年03月23日17時(shí)01分 來(lái)源:傳智教育 瀏覽次數(shù):
ArrayList集合在查詢(xún)?cè)貢r(shí)速度很快,但在增刪元素時(shí)效率較低,為了克服這種局限性,可以使用List接口的另一個(gè)實(shí)現(xiàn)類(lèi)LinkedList。LinkedList集合內(nèi)部包含有兩個(gè)Node類(lèi)型的first和last屬性維護(hù)一個(gè)雙向循環(huán)鏈表,在鏈表中的每一個(gè)元素都使用引用的方式來(lái)記住它的前一個(gè)元素和后一個(gè)元素,從而可以將所有的元素彼此連接起來(lái)。當(dāng)插入一個(gè)新元素時(shí),只需要修改元素之間的這種引用關(guān)系即可,刪除一個(gè)節(jié)點(diǎn)也是如此。正因?yàn)檫@樣的存儲(chǔ)結(jié)構(gòu),所以LinkedList集合對(duì)于元素的增刪操作表現(xiàn)出很高的效率,LinkedList集合添加元素和刪除元素的過(guò)程如圖所示。
在圖6-5中,通過(guò)兩張圖描述了LinkedList集合新增元素和刪除元素的過(guò)程。其中,左圖為新增一個(gè)元素,圖中的元素1和元素2在集合中彼此為前后關(guān)系,在它們之間新增一個(gè)元素時(shí),只需要讓元素1記住它后面的元素是新元素,讓元素2記住它前面的元素為新元素就可以了。右圖為刪除元素,要想刪除元素1和元素2之間的元素3,只需要讓元素1與元素2變成前后關(guān)系就可以了。LinkedList集合除了從接口Collection和List中繼承并實(shí)現(xiàn)了集合操作方法外,還專(zhuān)門(mén)針對(duì)元素的增刪操作定義了一些特有的方法,如下所示。
方法聲明 | 功能描述 |
void add(int index, E element | 在此列表中指定的位置插入指定的元素。 |
void addFirst(Object o) | 將指定元素插入集合的開(kāi)頭 |
void addLast(Object o) | 將指定元素添加到集合的結(jié)尾 |
Object getFirst(O | 返回集合的第一個(gè)元素 |
Object getLast() | 返回集合的最后一個(gè)元素 |
Object removeFirst() | 移除并返回集合的第一個(gè)元素 |
Object removeLast() | 移除并返回集合的最后一個(gè)元素 |
boolean offer(Object o) | 將指定元素添加到集合的結(jié)尾 |
boolean offerFirst(Object o) | 將指定元素添加到集合的開(kāi)頭 |
boolean offerLast(Object o) | 將指定元素添加到集合的結(jié)尾 |
Object peek() | 獲取集合的第一個(gè)元素 |
Object peekFirst() | 獲取集合的第一個(gè)元素 |
Object peekLast( | 獲取集合的最后一個(gè)元素 |
Object poll(0 | 移除并返回集合的第一個(gè)元素 |
Object pollFirst() | 移除并返回集合的第一個(gè)元素 |
Object pollLast() | 移除并返回集合的最后一個(gè)元素 |
void push(Object o) | 將指定元素添加到集合的開(kāi)頭 |
Object pop0 | 移除并返回集合的第一個(gè)元素 |
上表中,列出的方法主要針對(duì)集合中的元素進(jìn)行增加、刪除和獲取操作,接下來(lái)通過(guò)一個(gè)案例來(lái)學(xué)習(xí)LinkedList中常用方法的使用,如文件所示。
文件Example02.java
import java.util.LinkedList; public class Example02 { 3 public static void main(String[] args) { // 創(chuàng)建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(); //獲取集合第一個(gè)元素 System.out.println(object); // 輸出集合中的元素 // 3、刪除元素 link.removeFirst(); // 刪除集合第一個(gè)元素 link.pollLast(); // 刪除集合最后一個(gè)元素 System.out.println(link); 20 } 21 }
運(yùn)行結(jié)果如下圖所示。
在文件Example02.java首先創(chuàng)建了一個(gè)LinkedList集合,接著分別使用add()、offer()、push()方法向集合中插入元素,然后使用peek()方法獲取了集合的第一個(gè)元素,最后分別使用removeFirst()、pollLast()方法將集合中指定位置的元素移除,這樣就完成了元素的增、查、刪操作。由此可見(jiàn),使用LinkedList對(duì)元素進(jìn)行增刪操作是非常便捷的。
LinkedList整體結(jié)構(gòu)介紹和LinkedList源碼分析
北京校區(qū)