Bè di strade praticabili per la memorizzazioni dei dati ce ne sono 2 :
1) Serializzazione
2) DBMS

Per quanto riguarda la seconda ovviamente bisogna effettivamente vedere se ne hai bisogno, cioè quanti dati devi manipolare, che operazioni dovrai compiere etc...
La prima è quella più diretta e ti faccio un esempio:
codice:
public class Nominativo implements Serializable
{
     private String nome;
     private String cognome;

     //... get an set, constructor etc

    public static void main(String[] args)
    {
        List<Nominativo> nominativi = new ArrayList<Nominativo>();
        nominativi.add(new Nominativo("mio nome","mio cognome"));
        ObjectOutputStream out = new ObjectOutputStream(new FileOutputStream("nomefile.dat",true)); //true=append
        out.writeObject(nominativi); // effettuo la serializzazione della mia lista
        out.flush();
        out.close();
        

        //RICARICO LA MIA LISTA DAL FILE
        ObjectInputStream in=new ObjectInputStream(new FileInputStream("nomefile.dat"));
        nominativi = (List<Nominativo>) in.readObject();  
    }
}
Inutile dire che è uno pseudocodice (non gestisco nessuna eccezione di lettura e scrittura....)