As Vector methods are synchronized , there is little more overhead need for thread
operation like locking the object and releasing the lock. if a element is to added in Vector v , the current thread must get a lock on the vector v and it must release after adding the value. consider you are doing a single threaded where only one thread will access at a time , adding elements to the vector will bring additional thread- overheads which are not necessary, so ArrayList can be used instead of Vector. But in a multi threaded application , where only one thread need to access your data at a given point of time , you can use Vector
Vector was the oldest Collection. The ArrayList was introduced mainly due to the performance issues faced in using the Vector. Hashtable is the oldest Collection. The Hashtable methods are synchronized and it does not allow null values/keys . HashMap is simmilar to Hashtable , but its methods are not synchronized and it allows one null key and multiple null values.
Both Hashtable and HashMap implments the Map interface.
Both ArrayList and vector Implements List interface.
Another important tip
List , Map and Queue interfaces extend the Collection interface
but Map interface does not extends the Collection interface
K Sathya Narayanan