線性表:線性表就是數據排成像一條線一樣的結構,每個線性表上的數據最多隻有前和後兩個方向,有數組,鏈表,隊列,棧等都是線性表結構
非線性表:比如二叉樹,堆,圖等,非線性表中,數據之間並不是簡單的前後關係
數組
1.線性表
2.連續的內存空間和相同類型的數據
數組適合查找操作,但是查找的時間複雜度並不爲O(1),即使是排好序的數組,使用二分查找,時間複雜度也是O(Logn),所以,數組支持隨機訪問,根據下標隨機訪問的時間複雜度爲O(1)
ArrayList最大的優勢就是可以將很多數組操作的細節封裝起來,並且支持動態擴容。
但是擴容時涉及內存申請和數據搬移,因此,最好在創建ArrayList的時候事先指定數據大小。
使用數組的情況,
1.ArrayList無法存儲基本類型,比如int,long,需要封裝操作,而拆箱和裝箱有性能消耗,所以,如果關注性能,或者使用基本類型,就採用數組
2.如果數據大小事先已知,並且對數據操作簡單,用不到ArrayList提供的大部分方法,也可以直接使用數組
3.表示多維數組的時候,使用數組更加直觀。
數組下標從0開始是因爲歷史原因,還有就是下標其實是偏移量。