1. 程式人生 > >【Java】ArrayList 和 LinkList

【Java】ArrayList 和 LinkList

cti 順序存儲 基於 str 訪問 list 數據 版本 rem

1、什麽是ArrayList
ArrayList就是傳說中的動態數組,用MSDN中的說法,就是Array的復雜版本,它提供了如下一些好處:

  • 動態的增加和減少元素
  • 實現了ICollection和IList接口
  • 靈活的設置數組的大小

2、什麽是LinkList

  鏈表(Linked list)是一種常見的基礎數據結構,是一種線性表,但是並不會按線性的順序存儲數據,而是在每一個節點裏存到下一個節點的指針(Pointer)。由於不必須按順序存儲,鏈表在插入的時候可以達到O(1)的復雜度,比另一種線性表順序表快得多,但是查找一個節點或者訪問特定編號的節點則需要O(n)的時間,而順序表相應的時間復雜度分別是O(logn)和O(1)

3、ArrayList和LinkedList的大致區別:

  • ArrayList是實現了基於動態數組的數據結構,LinkedList基於鏈表的數據結構。
  • 對於隨機訪問get和set,ArrayList覺對優於LinkedList,因為LinkedList要移動指針。
  • 對於新增和刪除操作add和remove,LinedList比較占優勢,因為ArrayList要移動數據。但是,這個是要看實際情況的,若只對單條數據插入或刪除,ArrayList的速度反而優於LinkedList。但若是批量隨機的插入刪除數據,LinkedList的速度大大優於ArrayList. 因為ArrayList每插入一條數據,要移動插入點及之後的所有數據。

【Java】ArrayList 和 LinkList