細心的朋友會發現,JDK中提供的List接口對應的是數據結構中的線性表,List接口下的ArrayList對應的是順序線性表,顧名思義,其底層使用數組實現順序線性表;List接口下的LinkedList則是鏈表的實現。 數組
這兩種數據結構的各有所長,根據程序的實際用途,選擇適當的數據結構,無異是根本上的優化。 數據結構
順序存儲結構 : 優化
優勢: ①隨機存取時間複雜度爲O(1) ②無需爲表中元素之間的邏輯關係額外增長存儲空間 接口
缺點: ①插入、刪除操做須要移動大量的元素,時間複雜度爲O(n) 效率
②表的長度難以肯定 List
鏈式存儲結構: 遍歷
優勢: 插入、刪除節點時不移動數據, 效率高,時間複雜度爲O(1) 程序
缺點: 存取時要遍歷,效率低,時間複雜度爲O(n) 鏈表
所以,綜上所訴,順序存儲結構適合頻繁存取、查找,不多插入、刪除的狀況;鏈式存儲適合頻繁插入、刪除,不多存取的狀況; 數據