日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當(dāng)前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

数据结构特性解析 (四)LinkedList

發(fā)布時間:2025/3/21 编程问答 28 豆豆
生活随笔 收集整理的這篇文章主要介紹了 数据结构特性解析 (四)LinkedList 小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.

描述

LinkedList應(yīng)該也是開發(fā)中比較常用的數(shù)據(jù)結(jié)構(gòu)了,其基于鏈表數(shù)據(jù)結(jié)構(gòu)實現(xiàn),添加和刪除效率相對比較高,而隨機訪問效率偏低

特點

1.LinkedList是雙向不循環(huán)鏈表
通過查看鏈節(jié)點類:

private static class Node<E> {E item;Node<E> next;Node<E> prev;Node(Node<E> prev, E element, Node<E> next) {this.item = element;this.next = next;this.prev = prev;}}

可以看到其有數(shù)據(jù),上一個節(jié)點和下一個節(jié)點,所以其是雙向的

而通過查看add源碼(add->linkLast)

void linkLast(E e) {final Node<E> l = last;final Node<E> newNode = new Node<>(l, e, null);last = newNode;if (l == null)first = newNode;elsel.next = newNode;size++;modCount++;}

我們可以看到next的節(jié)點為null,所以LinkedList是雙向不循環(huán)鏈表

2.添加和刪除的效率相對比較高
直接添加的函數(shù)在上面已經(jīng)看到了,其直接修改幾個節(jié)點地址即可做到添加操作
隨機添加的函數(shù)如下

public void add(int index, E element) {checkPositionIndex(index);if (index == size)linkLast(element);elselinkBefore(element, node(index));//node()為根據(jù)索引查找的函數(shù),稍后再看}void linkBefore(E e, Node<E> succ) {// assert succ != null;final Node<E> pred = succ.prev;final Node<E> newNode = new Node<>(pred, e, succ);succ.prev = newNode;if (pred == null)first = newNode;elsepred.next = newNode;size++;modCount++;}

可以看到,隨機添加只是查找到對應(yīng)索引的節(jié)點對象,然后通過修改地址指向來添加到指定位置的
刪除的代碼:

removeLast->unlinkLastprivate E unlinkLast(Node<E> l) {// assert l == last && l != null;final E element = l.item;final Node<E> prev = l.prev;l.item = null;l.prev = null; // help GClast = prev;if (prev == null)first = null;elseprev.next = null;size--;modCount++;return element;}

隨機刪除的代碼:(也只是修改地址指向而已)

E unlink(Node<E> x) {// assert x != null;final E element = x.item;final Node<E> next = x.next;final Node<E> prev = x.prev;if (prev == null) {first = next;} else {prev.next = next;x.prev = null;}if (next == null) {last = prev;} else {next.prev = prev;x.next = null;}x.item = null;size--;modCount++;return element;}

3.隨機訪問效率較低

public E get(int index) {checkElementIndex(index);return node(index).item;}Node<E> node(int index) {// assert isElementIndex(index);if (index < (size >> 1)) {Node<E> x = first;for (int i = 0; i < index; i++)x = x.next;return x;} else {Node<E> x = last;for (int i = size - 1; i > index; i--)x = x.prev;return x;}}

通過代碼可以發(fā)現(xiàn),每次通過索引來獲取數(shù)據(jù)都需要遍歷,如果當(dāng)前索引靠前就從first向后遍歷,否則從last向前遍歷,最壞的情況時間復(fù)雜度是n/2,所以如果用在RecyclerView.Adapter中就會出現(xiàn)查找的效率問題(頻繁遍歷)

4.存儲數(shù)據(jù)占用的內(nèi)存空間更多

private static class Node<E> {E item;Node<E> next;Node<E> prev;}

可以看到,每次保存數(shù)據(jù)都需要將數(shù)據(jù)包在Node(節(jié)點對象)中在保存起來,然后還會有兩個對象地址,這樣每保存一條數(shù)據(jù)都會多占用一個Node對象的內(nèi)存和兩個對象地址的內(nèi)存

5.forEach遍歷效率比fori效率更高
使用forEach的話是每次都獲取next的節(jié)點,而使用fori就是每次都相當(dāng)于隨機獲取,顯而易見的forEach效率更高

下一篇:數(shù)據(jù)結(jié)構(gòu)特性解析 (五)hash表

總結(jié)

以上是生活随笔為你收集整理的数据结构特性解析 (四)LinkedList的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網(wǎng)站內(nèi)容還不錯,歡迎將生活随笔推薦給好友。

主站蜘蛛池模板: 波多野结衣电车 | 成人宗合 | 欧美色图日韩 | 久久免费视频网站 | 亚洲国产一级 | 日韩欧美大陆 | 国产稀缺真实呦乱在线 | 久久精品亚洲精品 | 中文字幕国产剧情 | 亚洲欧美精品aaaaaa片 | 成人av网站免费 | wwwyoujizz日本| 97人人在线视频 | 国产高清一二三区 | 亚洲精品乱码久久久久久按摩观 | 欧美日韩精品久久久免费观看 | 中文字幕精品一区二区三区精品 | 国产黄在线观看 | 久久精品这里有 | 亚洲成色www久久网站 | 亚洲啪啪免费视频 | 高潮无码精品色欲av午夜福利 | 青青操视频在线播放 | 秋霞福利影院 | 男女视频一区二区 | 在线视频你懂得 | 搡国产老太xxx网站 高h喷汁呻吟3p | 久久国产精品影视 | 91视频在线免费观看 | 另类激情 | 欧美激情一区二区三级高清视频 | 综合网五月 | 欧美激情 一区 | 97国产资源 | 狠狠干2018| 欧美日韩视频一区二区三区 | 波多野吉衣伦理片 | 亚洲国产一区二区在线 | av片一区二区三区 | 国产一区二区网站 | 中国黄色三级视频 | 18av在线播放 | 在线国产中文字幕 | 国产一区二区三区四区hd | 风间由美一区二区三区 | 我要看18毛片 | 樱花草涩涩www在线播放 | 免费观看在线播放 | 捆绑调教sm束缚网站 | 亚洲色图 一区二区 | 久久精品专区 | 国产成人午夜 | 中文字幕一区二区三区免费看 | 亚洲av无码国产精品麻豆天美 | 欧美在线a | 欧美日韩亚洲一区二区 | 国产伦精品一区二区三 | 在线观看免费高清 | 操网站| 麻豆视频免费 | 国语对白对话在线观看 | 欧美视频一二区 | 日日干夜夜拍 | 男女操操| 成人一级影视 | а√天堂资源在线 | 亚洲精品久久久久久动漫器材一区 | 成年人在线观看视频免费 | xxxxhd欧美| 奇米精品一区二区三区四区 | 天天看视频| 午夜高清 | 天堂在线视频免费 | 欧美性猛交xxx乱久交 | 国产伦子伦对白视频 | 精品国产鲁一鲁一区二区张丽 | 成人黄色片免费看 | 国产97色在线 | 日韩 | 黄色一及片 | 亚洲AV无码成人精品区麻豆 | 精品久久久久久久久久岛国gif | 国内成人av | 黄网视频在线观看 | 三上悠亚一区二区三区 | 国产高清一区在线观看 | 亚洲av无码一区二区三区人妖 | 国产人成免费视频 | 少妇系列在线观看 | 国产乱妇4p交换乱免费视频 | 天狂传说之巴啦啦小魔仙 | 欧美人xxxx| 中文字幕人妻一区二区三区 | 欧美激情免费视频 | 男女激情网 | 国产精品刺激 | 色爽| 青青草视频免费 | 亚洲熟悉妇女xxx妇女av | 国产伦精品一区二区三区视频免费 |