數(shù)組數(shù)據(jù)結構
特點:
查詢和修改快
增加和刪除慢
ArrayList的底層是使用數(shù)組的數(shù)據(jù)結構
在ArrayList中初始化的長度是10御蒲,如果長度不夠用了摔桦,每次會增加之前長度的50%妒蔚,然后將舊的集合中的數(shù)據(jù)拷貝到新的集合中。
數(shù)組結構圖:
為什么查詢和修改快吆你?
查詢和修改時直接通過數(shù)組的下標就能快速定位到相應的位置。
為什么增加和刪除慢俊犯?
數(shù)組里面內(nèi)存地址是連續(xù)的妇多,如果要做增加或者刪除時勢必要修改長度,這樣可能會導致牽一發(fā)而動全身的操作燕侠,比如在下標是2位置上的元素進行刪除者祖,那么后面每個位置上面的元素都會向前移動。
鏈表數(shù)據(jù)結構
特點:
增加和刪除快
查詢和修改慢
LinkedList的底層使用的是鏈表數(shù)據(jù)結構绢彤,可以將鏈表看做是一條斷開的車鏈子七问,兩兩相扣。
鏈表結構圖
為什么增加和刪除快茫舶?
鏈表里面的內(nèi)存地址不是連續(xù)的械巡,每個元素里面都保留著上一個元素和下一個元素的內(nèi)存地址(首尾除外),如果要增加或刪除元素時饶氏,只有與他相鄰的兩個位置上的元素發(fā)生變化讥耗,其他元素不用任何改變。
為什么查詢和修改慢疹启?
鏈表里面的內(nèi)存地址不是連續(xù)的古程,要查找的話,需要從頭或者尾部挨個查找喊崖,不能直接定位挣磨。