1. 程式人生 > >泛型陣列列表和普通陣列之間的區別

泛型陣列列表和普通陣列之間的區別

最近用到了ArrayList這種泛型類,來和大家分享一下。

泛型陣列列表

陣列列表,顧名思義就是一張表格,這張表格代表了記憶體中的一部分空間,你填寫了這張表多少,他就佔記憶體多少空間,而沒被填寫的部分依舊是記憶體中可用的空間。同時這張表是可以定製大小的,除此之外,還可以進行縮放。當然,效率肯定是要比普通陣列低一些。最重要的一點,陣列列表在記憶體中也是連續儲存的。

普通陣列

普通陣列,即使在記憶體中開闢的一段連續的儲存空間,當分配好後,無論你用還是不用,這段空間都分了出去,不能再給其他東西用。

兩者的區別

正如上述所說,普通陣列分配好空間後,這段空間只能用來進行陣列的操作,並且不能放大或縮小,如果超出這個範圍,那就不知道會發生什麼了。就好比房地產商選好一塊地,並且在這塊地上蓋滿了房子,不管房子裡住不住人,地都已經占上了,除非拆遷。然而對於陣列列表而言,所謂開闢一定大小的空間,只是告知編譯器可能需要這麼大的一塊空間,要為其預留出來,只不過等物件將這塊地的用量確定以後,JVM就可以將多餘的回收掉。如果預留的這塊不夠,那JVM就要為其另開闢一塊更大的連續儲存空間,然後再把已經存在的資料搬過去,再將原記憶體空間釋放掉。換成房地產商而言,就是規劃局申請了一塊地,然後根據住戶的多少對房子進行定製,從而有多少使用者就蓋多少房子,而多餘確定不在有住戶的空間再交還給政府。