Puoi utilizzare, ad esempio, l'interfaccia Comparator.
Nella tua classe Studente, implementi questa interfaccia ed il metodo compare().
Segui la documentazione dell'interfaccia Comparator per avere ulteriori dettagli.
Nel metodo compare() specifichi come deve avvenire il confronto fra due oggetti Studente, imponendo un ordinamento lessicografico sul campo Esame:
codice:
public class Studente implements Comparator {
   ...
   public int compare(Object o1, Object o2) {
      Studente s1 = (Studente) o1;
      Studente s2 = (Studente) o2;
      return o1.esame.compareTo(o2.esame);
   }
}
Poi passi l'ArrayList al metodo statico sort() della classe Arrays:
codice:
ArrayList mioArrayList = ...

// Ordino l'ArrayList
Arrays.sort( mioArrayList );
Ciao.