Vector is synchronized and Arraylist is not. By, synchronized it means here is, any method that touches Vector's content, is sync (or read it as thread safte).
Practically, for normal execution where you expect program to run in a single threaded env, use ArrayList and when in doubt or to protect data at any cost,
use synchronizedList from Collections api. Below is the link.
http://docs.oracle.com/javase/1.4.2/docs/api/java/util/Collections.html#synchronizedList(java.util.List)