1. ArrayList 實現了基於動態數組的數據結構,LinkedList 是基於鏈表的數據結構。
2. 對於隨機訪問 get 和 set,ArrayList 優於 LinkedList,因為 LinkedList 要移動指針(如 get 的時間復雜度分別為O(1)和O(n))。
3. 對於新增和刪除操作 add 和 remove,LinedList 占優勢,因為 ArrayList 要移動數據。
4. ArrayList 在使用的時候默認的初始化數組的長度為10,如果空間不足則會采用2倍的形式進行容量的擴充。
如果保存大數據的時候有可能造成垃圾的產生以及性能的下降,這個時候就可以用 LinkedList 子類保存.
5. ArrayList 的空間浪費主要體現在在 list 列表的結尾預留一定的容量空間,而 LinkedList 則體現在它的每一個元素都需要消耗相當的空間.
總結:
當操作是在一列數據的后面添加數據而不是在前面或中間,並且需要隨機地訪問其中的元素時,使用 ArrayList 會提供比較好的性能;
當你的操作是在一列數據的前面或中間添加或刪除數據,並且按照順序訪問其中的元素時,就應該使用 LinkedList。