隨機訪問
1.數組Array是線性表,用一組連續的內存空間,存儲一組相同數據類型的數據。這個特性決定了隨機訪問的基礎。
2.線性表:數組、隊列、鏈表、棧。非線性表:樹、圖、堆
3.一維數組尋址公式:a[i]_adress = base_adress + i * data_type_size
插入與刪除
1.插入的最好時間複雜度爲O(1),最壞時間複雜度爲O(n),平均時間複雜度爲O(n)
每次插入都會引起插入位置後所有數據的遷移,所以不能用均攤時間複雜度
2.刪除同插入
刪除的優化:並不是真正刪除,而是標記該位置爲刪除,等數組內空間不足時,執行一次真正的刪除。這也是jvm標記清除垃圾回收算法的思想
下標越界
ArrayIndexOutOfBoundsException
數組容器
java的ArrayList封裝了數組操作的很多細節,同時支持動態擴容(1.5倍)。創建時指定大小,有助於節省多次擴容和數據搬遷操作。對性能有些許損耗,除非是做底層框架,否則影響不大
補充
二維數組尋址公式:對於a[m][n]的二維數組,a[i][j]_adress = base_adress + ( i*n + j ) * data_type_size