Aggiungo: se vuoi comparare oggetti di tipo diverso (e che di serie non sono "mutualmente" comparabili tra di loro) nella lista, es. appunto String e Integer, tecnicamente è possibile.
Innanzitutto devi avere un ArrayList<Object>. Poi dovresti realizzare una tua classe "comparatore" che implementa Comparator<Object>.
A quel punto tu ricevi due oggetti e puoi fare tecnicamente quello che vuoi. Se sono entrambi String o Integer, non ci sono dubbi sul risultato (e non ci sono problemi particolari).
Se hai un String e un Integer ..... devi stabilire tu cosa vuol dire compararli.
Logica ipotetica che mi viene in mente:
- se String è parsabile in int (/Integer), fai la conversione e sostanzialmente confronti due valori interi (es. "2" vs 5 ---> confronti 2 e 5)
- se String non è parsabile in int, converti il numero in String e confronti due stringhe (es. "abc" vs 5 ---> confronti "abc" con "5").
E' solo una mia idea ... ce ne possono essere altre ....![]()