Un'interfaccia deve essere sola in un file? O posso metterla prima di una classe?
Inserire un interfaccia inner non penso abbia senso
Va inserita in un file a parte , in modo tale da permettere ad altre classi di implementarle.Se più oggetti implementano la stessa interfaccia , tu puoi utilizzarli tutti indistintamente , senza preoccuparti del tipo , usando i metodi definiti dall'interfaccia.

Ma non potevo usarlo anche con stringhe?
Le stringhe implementano già comparable, quindi puoi utilizzare tranquillamente il compareTo.

Ma i comandi " (Comparable) " servono per convertire i dati in dati comparabili giusto?
Così dopo posso usare il metodo compateTo().
Esattamente , però devi implementare tu il metodo comparable in base alle specifiche del tuo oggetto.