Java 裡面 Collection Framework 裡面,提供許多不一樣的 Class 給 Programmer 挑選使用,常常忘了思考,在什麼樣的情況下,應該使用不同的 Collection Class ,而 ArrayList 和 Vector 就是很容易忘記差異的兩項。
ArrayList 和 Vector 的差異,顯而易見的部分如下:
- Synchronization - ArrayList 並沒有處理 Synchronization ,所以在 ArrayList 並非 Thread – safe 的。
- Vector 則有處理 Synchronization ,所以效能上會有一些影響。
- Data growth - 預設的情況下,Vector 在空間不足的情況下,一次會擴張 2 倍的空間
- ArrayList 會擴張當前空間的 1/2。
- Iteration Performance - ArrayList 進行 Iteration 的速度也比 Vector 快,主要是兩者在 Itr (JDK Source) 裡的實作方式不一樣。
Reference
Difference Between ArrayList And Vecotr