Vector ist eine ältere Klasse, die nachträglich an die Collections-API angepasst wurde. (Er enthält aber noch methoden wie "getElementAt(..)", die die Funktionalität von "get(..)" haben. Vector ist synchronisiert, was z.B. eine ArrayList nicht ist.
Wenn man sowas macht wie
List<X> list = new Vector<X>();
dann ist das IMHO OK. Die Alternative wäre
List<X> list = Collections.synchronizedList(new ArrayList<X>());
Was man aber auf keinen Fall (!!!) machen sollte, ist sowas wie
Vector<X> list = new Vector<X>();
weil dann jemand die veralteten Methoden wie "getElementAt(..)" verwenden könnte, und man damit auf Vector festgelegt wäre.