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

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

android list 比较,LinkedList 和 ArrayList 的区别

發布時間:2024/7/23 编程问答 34 豆豆
生活随笔 收集整理的這篇文章主要介紹了 android list 比较,LinkedList 和 ArrayList 的区别 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

![](https://markdown-1258186581.cos.ap-shanghai.myqcloud.com/20190606104746.png)

## 區別

* ArrayList 動態數組

* LinkedList 雙向鏈表,它同樣可以被當作棧、隊列或雙端隊列來使用

* 對ArrayList和LinkedList而言,在列表末尾增加一個元素所花的開銷都是固定的。對ArrayList而言,主要是在內部數組中增加一項,指向所添加的元素,偶爾可能會導致對數組重新進行分配;而對LinkedList而言,這個開銷是統一的,分配一個內部Entry對象。

* 在ArrayList的中間插入或刪除一個元素意味著這個列表中剩余的元素都會被移動;而在LinkedList的中間插入或刪除一個元素的開銷是固定的。

* LinkedList不支持高效的隨機元素訪問。

* ArrayList的空間浪費主要體現在在list列表的結尾預留一定的容量空間,而LinkedList的空間花費則體現在它的每一個元素都需要消耗相當的空間

## 總結:

LinkedList 在查找指定位置元素的時候,會先根據傳入的 index 和當前 size 的一半作比較。如果小于當前的一半,就從頭節點遍歷,如果大于當前size 的一半,從尾節點開始遍歷。

實現如下:

~~~

Node node(int index) {

// assert isElementIndex(index);

// 如果小于當前 size 的一半,從頭節點開始遍歷

if (index < (size >> 1)) {

Node x = first;

for (int i = 0; i < index; i++)

x = x.next;

return x;

} else {

// 這里是大于當前 size 的一半,從尾節點開始遍歷

Node x = last;

for (int i = size - 1; i > index; i--)

x = x.prev;

return x;

}

}

~~~

可以這樣說:當操作是在一列數據的**后面添加數據而不是在前面或中間**,并且需要隨機地訪問其中的元素時,使用ArrayList會提供比較好的性能;當你的操作是在一列數據的**前面或中間添加或刪除數據,**并且按照順序訪問其中的元素時,就應該使用LinkedList了。

總結

以上是生活随笔為你收集整理的android list 比较,LinkedList 和 ArrayList 的区别的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。