1、ArrayList與LinkedList的區別?(ali一面 卒)
①ArrayList實現了List接口,底層實現了基於動態數組的數據結構,LinkedList基於鏈表的數據結構來實現List接口的。它本身有自己特定的方法,如: addFirst(),addLast(),getFirst(),removeFirst()等。
②對於隨機訪問get和set,ArrayList性能優於LinkedList,因爲LinkedList要移動指針,而數組的特性是可以使用索引的方式來快速定位對象的位置,因此對於快速的隨機取得對象的需求,使用ArrayList實現執行效率上會比較好。
③對於新增和刪除操作,LinkedList性能好,因爲ArrayList要移動數據,而LinkedList由於是採用鏈表實現的,因此在進行insert和remove動作時在效率上要比ArrayList要好得多!適合用來實現Stack(堆棧)與Queue(隊列),前者先進後出,後者是先進先出.
ArrayList內部是使用可増長數組實現的,所以是用get和set方法是花費常數時間的,但是如果插入元素和刪除元素,除非插入和刪除的位置都在表末尾,否則代碼開銷會很大,因爲裏面需要數組的移動。
LinkedList是使用雙鏈表實現的,所以get會非常消耗資源,除非位置離頭部很近。但是插入和刪除元素花費常數時間。