Vector
is a legacy collection class from Java 1.0. In Java 1.2 (long ago!), the Collections Framework was added which included new collection classes such as ArrayList
and HashMap
, which were intended to replace the legacy classes Vector
and Hashtable
.
As said before, the legacy collection classes had built-in synchronization, which is unnecessary for many applications. Synchronization has a performance overhead, so if it's not necessary, you shouldn't use it.
In some cases (when your program is multi-threaded, and multiple threads access the same data) you need to synchronize your collections. Some people would then use the old Vector
or Hashtable
classes, but a better way is to use a synchronization wrapper with for example an ArrayList
:
// Your standard, unsynchronized list
List<String> data = new ArrayList<String>();
// Use this to put it into a synchronization wrapper
List<String> syncedData = Collections.synchronizedList(data);
See the API documentation of Collections.synchronizedList()
(and other methods) for more information.