Java ArrayList和 LinkedList的區別
ArrayList的基本特點
- 線程不同步
- 基於動態數組的數據結構
- 初始化大小默認10個元素, 如預先知道大小也可以初始化時手動設置 List a = new ArrayList<>(3);能節省擴容的性能開支(動態自動擴容規則: 擴容後的大小 = 原始大小 + 原始大小 / 2 + 1. 例: 原始大小10, 擴容後的大小是10 + 5 + 1 = 16)
ArrayList的優點與缺點
- 因爲是數組形式 可通過查詢數組下標的形式訪問數組元素還有尾部添加新元素時效率高, 所以相關性能優於 LinkedList
- 但是刪除數組中的數據以及向數組中間添加數據效率低, 因爲需要移動數組. 例如: 刪除第一個數組元素, 則需要將第2至第n個數組元素各向前移動一位
- 如果預先不設置大小可能會有空間浪費
LinkedList的基本特點
- 線程不同步
- 基於鏈表的數據結構
- 沒有初始化大小, 也沒有擴容的機制
LinkedList的優點與缺點
- 新增和刪除元素時因只需改變指針指向, 所以相關效率優於 ArrayList
- 但是查詢元素時需要對鏈表進行遍歷, 所以相關性能低於 ArrayList, 還有 LinkedList不支持高效的隨機元素訪問
總結
- 需要隨機訪問元素, 只在末尾添加新元素而不在頭部或中間還有基本沒有刪除操作時選擇 ArrayList
- 常常有頭部或中間添加或刪除元素操作時選擇 LinkedList
如果您覺得有幫助,歡迎點贊哦 ~ 謝謝!!