一区二区三区日韩精品-日韩经典一区二区三区-五月激情综合丁香婷婷-欧美精品中文字幕专区

分享

Java集合類LinkedList淺析

 xujin3 2018-08-21

LinkedList作為ArrayList的老弟,也繼承了父親List的特點(diǎn):有序,允許存null值,允許重復(fù)值。和大哥ArrayList相比,LinkedList底層靠鏈表存儲(chǔ)元素,不用考慮數(shù)組擴(kuò)容,刪除插入元素所帶來的資源消耗的問題。但在訪問元素上就沒有數(shù)組直接通過索引這么方便了,大家根據(jù)不同的業(yè)務(wù)場(chǎng)景來選擇不同的集合。那什么又是鏈表呢? 

沒錯(cuò),這就是鏈表!!!

同事之間靠自己的手抓住下一個(gè)同事的肩膀來構(gòu)成關(guān)系。跑到天涯海角,都能找到你。鏈表中的每一個(gè)節(jié)點(diǎn)靠記錄上一個(gè)/下一個(gè)節(jié)點(diǎn)位于內(nèi)存中的地址來維護(hù)節(jié)點(diǎn)之間的關(guān)系,節(jié)點(diǎn)在內(nèi)存中的位置也可以是不固定,分散的,這點(diǎn)和數(shù)組不同。

插入節(jié)點(diǎn)

當(dāng)有新的同事插入隊(duì)列時(shí),需要從第一個(gè)同事開始一直向下找到想要插隊(duì)的位置,然后自己的手搭在右邊同事的肩上,再將左邊同事的手搭在自己肩膀上,就入隊(duì)成功了。有同事出隊(duì)也一樣。

比如有同事插隊(duì)到第四個(gè)位置去:

插入刪除元素,需要從第一個(gè)元素開始一直向下找到該位置上的節(jié)點(diǎn)再做操作。和數(shù)組比較起來,數(shù)組是犧牲時(shí)間和空間,而鏈表是犧牲時(shí)間,最壞從第一個(gè)找到最后一個(gè)時(shí)間復(fù)雜度O(n)。對(duì)于鏈表節(jié)點(diǎn)會(huì)多使用內(nèi)存的情況,個(gè)人認(rèn)為單向鏈表需要多使用一塊內(nèi)存來記錄下一個(gè)節(jié)點(diǎn)的位置,而數(shù)組本身也是存儲(chǔ)記錄對(duì)象的內(nèi)存地址的,個(gè)人覺得兩者相比并沒有誰更節(jié)約。歡迎大家提出自己的看法。

雙向鏈表

刪除和插入元素都需要從第一個(gè)開始向下尋找,當(dāng)元素越來越多時(shí),性能肯定會(huì)越來越不好。上面新同事插隊(duì)到以四個(gè)位置,如果從最后一個(gè)同事開始向前找位置,會(huì)快跟多。問題的根本在于,每個(gè)節(jié)點(diǎn)只記錄下一個(gè)節(jié)點(diǎn)的位置。節(jié)點(diǎn)只能找到自己后面的節(jié)點(diǎn),找不到自己前面的節(jié)點(diǎn)。所以前輩們又發(fā)明了雙向鏈表:節(jié)點(diǎn)之間緊緊相扣。

同時(shí)每個(gè)節(jié)點(diǎn)還需要一塊空間來記錄前面節(jié)點(diǎn)的位置。LinkedList底層就是用雙向鏈表來實(shí)現(xiàn)的。

插入刪除元素時(shí),會(huì)根據(jù)索引的位置,優(yōu)先選擇是從頭開始還是從尾開始找。最壞次數(shù),當(dāng)前鏈表大小的一半,當(dāng)然這是犧牲些許內(nèi)存所換來的。

當(dāng)需要插入元素時(shí),只需要: 
1.找到該位置上的節(jié)點(diǎn)


2.插入節(jié)點(diǎn)的前驅(qū)為該位置節(jié)點(diǎn)的前驅(qū),插入節(jié)點(diǎn)的后驅(qū)為該位置節(jié)點(diǎn)


3.該位置的前驅(qū)節(jié)點(diǎn)的next指向插入節(jié)點(diǎn)


4.該位置節(jié)點(diǎn)的pre指向插入節(jié)點(diǎn)

刪除元素也一樣: 

1.找到該位置上的節(jié)點(diǎn)


2.將該位置節(jié)點(diǎn)的前驅(qū)節(jié)點(diǎn)的next,指向該位置節(jié)點(diǎn)的后驅(qū)節(jié)點(diǎn)


3.將該位置節(jié)點(diǎn)的后驅(qū)節(jié)點(diǎn)的pre,指向該位置節(jié)點(diǎn)的前驅(qū)節(jié)點(diǎn)

1.和ArrayList相比不用考慮擴(kuò)容問題 。

2.刪除和插入節(jié)點(diǎn)會(huì)消耗時(shí)間,優(yōu)于ArrayList的消耗時(shí)間和空間。 
3.訪問元素慢于ArrayList。 

不足之處多多包涵。

END


    本站是提供個(gè)人知識(shí)管理的網(wǎng)絡(luò)存儲(chǔ)空間,所有內(nèi)容均由用戶發(fā)布,不代表本站觀點(diǎn)。請(qǐng)注意甄別內(nèi)容中的聯(lián)系方式、誘導(dǎo)購(gòu)買等信息,謹(jǐn)防詐騙。如發(fā)現(xiàn)有害或侵權(quán)內(nèi)容,請(qǐng)點(diǎn)擊一鍵舉報(bào)。
    轉(zhuǎn)藏 分享 獻(xiàn)花(0

    0條評(píng)論

    發(fā)表

    請(qǐng)遵守用戶 評(píng)論公約

    類似文章 更多

    国产精品视频一区麻豆专区| 国产日韩精品激情在线观看| 亚洲国产婷婷六月丁香| 亚洲最大的中文字幕在线视频| 91人妻人澡人人爽人人精品| 丝袜诱惑一区二区三区| 亚洲熟女少妇精品一区二区三区| 久久大香蕉精品在线观看| 国产一区二区三区香蕉av| 国产福利一区二区三区四区| 东北老熟妇全程露脸被内射| 久久国内午夜福利直播| 国产日韩精品激情在线观看| 人妻久久一区二区三区精品99| 91欧美日韩中在线视频| 日韩av亚洲一区二区三区| 东京热加勒比一区二区三区| 国产欧美一区二区久久| 亚洲国产性生活高潮免费视频| 国产一区二区三区av在线| 99久久国产精品亚洲| 亚洲欧美日本国产有色| 亚洲妇女黄色三级视频| 国产欧美日韩精品自拍| 两性色午夜天堂免费视频| 亚洲一区二区三区在线免费| 成人精品一区二区三区在线| 日韩专区欧美中文字幕| 女人高潮被爽到呻吟在线观看| 亚洲一区二区精品久久av| 亚洲最新一区二区三区| 国产亚洲二区精品美女久久| 欧美一区日韩二区亚洲三区| 亚洲一区二区欧美在线| 老熟妇2久久国内精品| 午夜精品成年人免费视频| 欧美亚洲国产日韩一区二区| 日本不卡在线视频中文国产| 久久这里只有精品中文字幕| 日韩三极片在线免费播放| 国产成人精品综合久久久看|