ArrayList採用的資料結構是Array(陣列);LinkedList採用的資料結構是 LinkedList (翻譯為鏈結串列或連結串列)。
陣列是在大家學習集合前必須要有的基礎知識,因此在這邊先簡單的介紹鏈結串列。鍊節串列的每一個節點包含的資訊有:1. 本身儲存的資料 2. 指到另一個節點所在的位址。
鍊節串列可分為單向鍊節串列,雙向鍊節串列,迴圈鍊節串列等等。
詳情可參閱維基百科: 連結串列。
那麼,何時使用ArrayList,何時使用LinkedList較好呢?
當我們需要頻繁的取得List內的資料時,使用ArrayList的效率較好,因為它的資料結構是array,array採用隨機存取(random access)的方式,也就是直接透過索引(Index),取得值。 而LinkedList要取得值必須從開始的節點一路搜尋到要需要的值的位址,需要花費大量的時間。
當我們需要頻繁的新增資料與刪除資料時,使用LinkedList較好。因為使用LinkedList新增/刪除資料時,只要改動被新增/刪除的那筆資料前面一個節點所指向的位址及可。但若使用ArrayList,要新增或刪除array的資料,新增/刪除結束後,需要重新搬動剛才被新增/刪除之後的所有節點,並且重新給定之後所有節點的索引值,因此效率會較差。
其它文章
沒有留言:
張貼留言