Innanzitutto Vector a partire da Java 1.2 implementa List ... quindi di fatto è una "lista". Comunque Vector è la "vecchia" collezione legacy, che oltretutto è synchronized e non sempre serve una collezione che sia tale perché magari, ad esempio, è sempre acceduta nel contesto dello stesso thread.
Infine se usi Vector (ma anche es. ArrayList) stai codificando verso una implementazione, mentre invece (sempre se non ci sono ragioni ben valide) sarebbe meglio codificare verso una astrazione, ovvero nel caso delle collezioni verso una interfaccia come List.
In questo modo hai più flessibilità nel cambiare in futuro il tipo di collezione che viene realmente istanziato e restituito dal metodo. All'inizio il "findAllMenus" potrebbe creare un ArrayList ma se in futuro volessi passare a LinkedList puoi farlo, senza che il resto all'esterno debba cambiare. Se volessi un giorno restituire un List "immutabile" puoi farlo, grazie a Collections.unmodifiableList.
Insomma, hai più possibilità di cambiare .... mentre se usi Vector hai abbastanza le mani legate o comunque diventa più complicato poter cambiare "idea".
Ovviamente così no.
Invece es.:
codice:Menu menu = new Menu(); menu.setName(rs.getString("menuName")); menu.setXXXX(rs.getYYYY("xxxxxx")); ..... lista.add(menu);