1. 程式人生 > >ArrayList和LinkedList區別

ArrayList和LinkedList區別

ArrayList 是一個可改變大小的陣列。當更多的元素加入到ArrayList中時,其大小將會動態地增長。內部的元素可以直接通過get與set方法進行訪問,因為ArrayList本質上就是一個數組,

LinkedList 是一個雙鏈表,在新增和刪除元素時具有比ArrayList更好的效能.但在get與set方面弱於ArrayList。

當然,這些對比都是指資料量很大或者操作很頻繁的情況下的對比,如果資料和運算量很小,那麼對比將失去意義。

 

1、ArrayList和LinkedList可想從名字分析,它們一個是Array(動態陣列)的資料結構,一個是Link(連結串列)的資料結構,此外,它們兩個都是對List介面的實現。

前者是陣列佇列,相當於動態陣列;後者為雙向連結串列結構,也可當作堆疊、佇列、雙端佇列

2、當隨機訪問List時(get和set操作),ArrayList比LinkedList的效率更高,因為LinkedList是線性的資料儲存方式,所以需要移動指標從前往後依次查詢。

3、當對資料進行增加和刪除的操作時(add和remove操作),LinkedList比ArrayList的效率更高,因為ArrayList是陣列,所以在其中進行增刪操作時,會對操作點之後所有資料的下標索引造成影響,需要進行資料的移動。

4、從利用效率來看,ArrayList自由性較低,因為它需要手動的設定固定大小的容量,但是它的使用比較方便,只需要建立,然後新增資料,通過呼叫下標進行使用;而LinkedList自由性較高,能夠動態的隨資料量的變化而變化,但是它不便於使用。

5、ArrayList主要控制元件開銷在於需要在lList列表預留一定空間;而LinkList主要控制元件開銷在於需要儲存結點資訊以及結點