Salut,
1. Vector n'est pas dépassé. C'est un ArrayList avec des méthodes synchronisées (donc thread safe). A utiliser si le besoin d'une List thread safe se présente (exemple: Swing et les contrôleurs d'une JTable)
2. Dans les deux cas (Vector ou ArrayList), il faut rajouter des objets et non pas des entiers. Avec un cast auto que le compilateur fait pour nous dans les dernières versions du JDK, le a.add(i) est OK (il transforme int en Integer avant de faire l'ajout). Mais pas dans un JDK 1.4 où tu devras faire le cast explicitement:
List a = new ArrayList();
// ou bien List a = new Vector(); cela dépend des besoins
// List<Integer> a = new ArrayList<Integer>(); ne compilera pas avec un JDK 1.4
int i =3;
a.add(new Integer(i));
++