For my own quick reference only.
這個 post 的內容全部引用自這篇文章,感謝:菜鳥工程師的紀錄: Array與List
Array使用連續記憶體空間,List【不需要】使用連續記憶體空間。
連續記憶體空間是什麼意思?比方說你要蓋五棟房子,連續記憶體空間代表你要找一個塊夠大的地,可以讓你五棟房子都蓋在一起,在都市應該很難找,到鄉下比較有機會,不使用連續記憶體空間代表代表你只要找到五塊空地,就可以蓋五棟房子,並不要求一定要蓋在一起。
使用連續記憶體空間始有風險的,因為記憶體一直不斷的在存放資料刪除資料,記憶體空間看起來還不少,但很有可能都是零碎的記憶體空間,有時候在宣告比較大的Array的時候會失敗,因為連續記憶體空間不夠。
Array輪循速度比較快,List輪循速度比較慢。
以上面蓋房子的例子來說,Array要走過所有房子很快,因為都蓋在一起,但是List就不一樣了,因為房子不一定蓋在一起,所以要走過所有房子就要花比較多的時間。
Array無法新增或刪除其中的元素,List可以。
Array因為房子都蓋在一起,一開始就設計好了,沒辦法中間插進去一棟或者是敲掉其中一棟,再把其他棟移過來,但是List因為房子都沒有蓋在一起,所以要增加或減少房子都沒問題。
Array可以反轉,可以比較其中的元素是否相同。