Non è corretto dire che la classe Date è stata deprecata: anzi, è la classe principe per il trattamento delle date, specialmente quando queste arrivano da input utente e/o da database.
Ciò che è stato deprecato di questa classe è la maggior parte dei suoi metodi e costruttori. Il perchè lo lascio a tua ricerca/documentazione.
Detto questo, il campo di tipo Date va benissimo, vediamo ora come fare ad usarlo. Ci sono diversi modi per ottenere un oggetto Date, a seconda di cosa si ha in mano. Ti elenco i due principali:
1) Utilizzare un SimpleDateFormat: metodo veloce e pratico per trasformare una stringa in un oggetto Date e viceversa.
2) Utilizzare un Calendar (tipo GregorianCalendar): metodo veloce e pratico per ottenere una data lavorabile (modificabile, manipolabile) a partire dagli elementi base di una data/ora.
Ti faccio due esempi, uno per ciascun tipo.
Supponiamo che tu debba prendere la data di nascita, leggendola come stringa.
codice:
// Leggo la stringa dall'utente nel formato "GG/MM/AAAA"
String data = ...
// Ottengo il relativo oggetto Date:
SimpleDateFormat sdf = new SimpleDateFormat("dd/MM/yyyy");
Date dataNascita = null;
try {
dataNascita = sdf.parse( data );
}catch (Exception e) { e.printStackTrace(); }
Supponiamo ora, invece, di avere i vari campi della data distinti: GIORNO, MESE e ANNO su tre campi interi
codice:
// Supponiamo la data odierna: 24/10/2013
int giorno = 24;
int mese = 10;
int anno = 2013
// Ottengo un GregorianCalendar che rappresenta la data odierna
// Attenzione al mese!! (vedi documentazione)
GregorianCalendar gc = new GregorianCalendar(anno, mese-1, giorno);
// Ora ottengo l'oggetto Date:
Date dataOdierna = gc.getTime();
Ti rimando alla documentazione delle due classi per approfondimenti:
java.text.SimpleDateFormat
java.util.GregorianCalendar
Per la questione della lista, il suggerimento del tuo prof mi sembra corretto e non è di difficile applicazione.
Ciao.