雙端鏈表LinkedList

一但金、LinkedList 介紹

1??LinkedList 是 Java 集合框架中一個(gè)重要的實(shí)現(xiàn)韭山,其底層采用的雙向鏈表結(jié)構(gòu),沒有初始化大小冷溃,就是一直在前面或者后面新增就好钱磅。由于基于鏈表實(shí)現(xiàn),存儲(chǔ)元素過程中似枕,無需像 ArrayList 那樣進(jìn)行擴(kuò)容盖淡。
2??LinkedList 存儲(chǔ)元素的節(jié)點(diǎn)需要額外的空間存儲(chǔ)前驅(qū)和后繼的引用。
3??LinkedList 在鏈表頭部和尾部插入效率比較高凿歼,但在指定位置進(jìn)行插入時(shí)褪迟,效率一般。原因是答憔,在指定位置插入需要定位到該位置處的節(jié)點(diǎn)味赃,此操作的時(shí)間復(fù)雜度為 O(N)。
4??和 ArrayList 一樣虐拓,LinkedList 也支持空值和重復(fù)值心俗。LinkedList 也是非線程安全的集合類。
5??由于 LinkedList 實(shí)現(xiàn)了 List 和 Deque 兩個(gè)接口蓉驹,所以 LinkedList 方法分兩種城榛,一種是 List 接口的方法,第二種是 Deque 接口的方法态兴。
6??由于 LinkedList 是一個(gè)實(shí)現(xiàn)了 Deque 的雙端隊(duì)列狠持,所以 LinkedList 既可以當(dāng)做 Queue,又可以當(dāng)做 Stack瞻润。在將 LinkedList 當(dāng)做 Stack 時(shí)喘垂,使用 pop()献汗、push()、peek() 需要注意的是 LinkedList 內(nèi)部是將鏈表頭部當(dāng)做棧頂王污,鏈表尾部當(dāng)做棧底。
7??隨機(jī)訪問慢楚午、插入刪除速度快昭齐。

二、LinkedList 使用

import java.util.Iterator;
import java.util.Deque;
import java.util.LinkedList;
import java.util.Queue;


public class LinkedlistDemo {

    public static void main(String[] args) {
        linkedShow();
        System.out.println(">----------一&&&二----------<");
        linkedDeque();
        System.out.println(">----------二&&&三----------<");
        linkedListPop();
    }

    public static void linkedShow() {
        // 創(chuàng)建一個(gè)隊(duì)列
        Queue<Integer> queue = new LinkedList<>();
        //添加元素
        queue.add(1);
        queue.offer(22);
        for (Integer integer : queue) {
            System.out.println("queue的add()和offer()驗(yàn)證:" + integer);
        }

        // 獲取但不移除此隊(duì)列的頭
        Integer a = queue.peek();
        // 輸出獲取的元素并打印出元素的長度矾柜,驗(yàn)證一下長度看看是否有變化
        System.out.println("queue.peek():" + a + "阱驾,后長度為:" + queue.size());

        // 獲取并移除此隊(duì)列的頭
        Integer bInteger = queue.poll();
        // 輸出獲取的元素并打印出元素的長度,驗(yàn)證一下長度看看是否有變化
        System.out.println("queue.poll():" + bInteger + "怪蔑,后長度為:" + queue.size());

    }

    public static void linkedDeque() {
        Deque<Integer> deque = new LinkedList<>();
        // 添加元素
        deque.add(3);
        // 在第一個(gè)位置添加元素
        deque.offerFirst(5);
        // 在最后一個(gè)位置添加元素
        deque.offerLast(7);
        for (Integer integer : deque) {
            System.out.println("deque新增驗(yàn)證:" + integer);
        }
        // 取出不移除元素
        Integer kInteger = deque.peekFirst();
        Integer mInteger = deque.peekLast();
        System.out.println("deque.peek():" + kInteger + ">>>>" + mInteger + "里覆,后長度為:" + deque.size());
        // 取出并移除元素方法
        Integer kInteger2 = deque.pollFirst();
        Integer mInteger2 = deque.pollLast();
        System.out.println("deque.poll():" + kInteger2 + ">>>>" + mInteger2 + ",后長度為:" + deque.size());
    }

    public static void linkedListPop() {
        // 創(chuàng)建一個(gè)linkedlist集合
        LinkedList<Integer> linkedList = new LinkedList<>();
        // 添加元素
        linkedList.push(9);
        linkedList.push(7);
        linkedList.push(5);
        linkedList.push(3);
        linkedList.push(1);
        for (Integer integer : linkedList) {
            System.out.println("linkedList.push():" + integer);
        }

        // 使用迭代器進(jìn)行正向輸出
        Iterator<Integer> inIterator = linkedList.iterator();
        while (inIterator.hasNext()) {
            Integer integer = inIterator.next();
            System.out.println(integer);
        }
        System.out.println("-------分割線-------");
        // 使用迭代器反向輸出結(jié)果
        Iterator<Integer> inIterator1 = linkedList.descendingIterator();
        while (inIterator1.hasNext()) {
            Integer integer = inIterator1.next();
            System.out.println(integer);
        }
        System.out.println("-------分割線-------");
        // 使用for循環(huán)進(jìn)行輸出元素并移除
        for (int i = 0; i <= 4; i++) {
            Integer result = linkedList.pop();
            System.out.println("linkedList.pop():" + result + ">------<" + "缆瓣,后長度為:" + linkedList.size());
        }
    }
}

輸出如下:

queue的add()和offer()驗(yàn)證:1
queue的add()和offer()驗(yàn)證:22
queue.peek():1喧枷,后長度為:2
queue.poll():1,后長度為:1
>----------一&&&二----------<
deque新增驗(yàn)證:5
deque新增驗(yàn)證:3
deque新增驗(yàn)證:7
deque.peek():5>>>>7弓坞,后長度為:3
deque.poll():5>>>>7隧甚,后長度為:1
>----------二&&&三----------<
linkedList.push():1
linkedList.push():3
linkedList.push():5
linkedList.push():7
linkedList.push():9
1
3
5
7
9
-------分割線-------
9
7
5
3
1
-------分割線-------
linkedList.pop():1>------<,后長度為:4
linkedList.pop():3>------<渡冻,后長度為:3
linkedList.pop():5>------<戚扳,后長度為:2
linkedList.pop():7>------<,后長度為:1
linkedList.pop():9>------<族吻,后長度為:0

Process finished with exit code 0
最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末帽借,一起剝皮案震驚了整個(gè)濱河市,隨后出現(xiàn)的幾起案子超歌,更是在濱河造成了極大的恐慌砍艾,老刑警劉巖,帶你破解...
    沈念sama閱讀 217,084評(píng)論 6 503
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件握础,死亡現(xiàn)場離奇詭異辐董,居然都是意外死亡,警方通過查閱死者的電腦和手機(jī)禀综,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 92,623評(píng)論 3 392
  • 文/潘曉璐 我一進(jìn)店門简烘,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人定枷,你說我怎么就攤上這事孤澎。” “怎么了欠窒?”我有些...
    開封第一講書人閱讀 163,450評(píng)論 0 353
  • 文/不壞的土叔 我叫張陵覆旭,是天一觀的道長退子。 經(jīng)常有香客問我,道長型将,這世上最難降的妖魔是什么寂祥? 我笑而不...
    開封第一講書人閱讀 58,322評(píng)論 1 293
  • 正文 為了忘掉前任,我火速辦了婚禮七兜,結(jié)果婚禮上丸凭,老公的妹妹穿的比我還像新娘。我一直安慰自己腕铸,他們只是感情好惜犀,可當(dāng)我...
    茶點(diǎn)故事閱讀 67,370評(píng)論 6 390
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著狠裹,像睡著了一般虽界。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上涛菠,一...
    開封第一講書人閱讀 51,274評(píng)論 1 300
  • 那天莉御,我揣著相機(jī)與錄音,去河邊找鬼碗暗。 笑死颈将,一個(gè)胖子當(dāng)著我的面吹牛,可吹牛的內(nèi)容都是我干的言疗。 我是一名探鬼主播晴圾,決...
    沈念sama閱讀 40,126評(píng)論 3 418
  • 文/蒼蘭香墨 我猛地睜開眼,長吁一口氣:“原來是場噩夢(mèng)啊……” “哼噪奄!你這毒婦竟也來了死姚?” 一聲冷哼從身側(cè)響起,我...
    開封第一講書人閱讀 38,980評(píng)論 0 275
  • 序言:老撾萬榮一對(duì)情侶失蹤勤篮,失蹤者是張志新(化名)和其女友劉穎都毒,沒想到半個(gè)月后,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體碰缔,經(jīng)...
    沈念sama閱讀 45,414評(píng)論 1 313
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡账劲,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 37,599評(píng)論 3 334
  • 正文 我和宋清朗相戀三年,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了金抡。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片瀑焦。...
    茶點(diǎn)故事閱讀 39,773評(píng)論 1 348
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡,死狀恐怖梗肝,靈堂內(nèi)的尸體忽然破棺而出榛瓮,到底是詐尸還是另有隱情,我是刑警寧澤巫击,帶...
    沈念sama閱讀 35,470評(píng)論 5 344
  • 正文 年R本政府宣布禀晓,位于F島的核電站精续,受9級(jí)特大地震影響,放射性物質(zhì)發(fā)生泄漏粹懒。R本人自食惡果不足惜重付,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 41,080評(píng)論 3 327
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望凫乖。 院中可真熱鬧堪夭,春花似錦、人聲如沸拣凹。這莊子的主人今日做“春日...
    開封第一講書人閱讀 31,713評(píng)論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽嚣镜。三九已至,卻和暖如春橘蜜,著一層夾襖步出監(jiān)牢的瞬間菊匿,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 32,852評(píng)論 1 269
  • 我被黑心中介騙來泰國打工计福, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留跌捆,地道東北人。 一個(gè)月前我還...
    沈念sama閱讀 47,865評(píng)論 2 370
  • 正文 我出身青樓象颖,卻偏偏與公主長得像佩厚,于是被迫代替她去往敵國和親。 傳聞我的和親對(duì)象是個(gè)殘疾皇子说订,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 44,689評(píng)論 2 354