首先是vector:
- vector是线程安全的
- Vector的空间扩容是一倍,内存不可复用,而ArrayList是一半 (C++ Made Easier: How Vectors Grow)
- Vector分配内存是连续的存储空间
然后是stack:Stack 是 JDK 1.0 的产物。它继承自 Vector。
当初 JDK1.0 在开发时,可能为了快速的推出一些基本的数据结构操作,所以推出了一些比较粗糙的类。比如,Vector、Stack、Hashtable等。这些类中的一些方法加上了 synchronized 关键字,容易误导。