Quando la classe implementa Comparable, il metodo compareTo
della classe sta definendo l'ordinamento "naturale" di quell'oggetto. Questo metodo è contrattualmente obbligato (anche se non richiesto) ad essere in linea con altri metodi su quell'oggetto, ad esempio deve essere sempre restituito uno 0 per gli oggetti quando i confronti .equals()
restituiscono true.
A Comparator A è la propria definizione di come confrontare due oggetti e può essere utilizzato per confrontare gli oggetti in un modo che potrebbe non essere allineato con l'ordinamento naturale.
Ad esempio, le stringhe vengono generalmente confrontate in ordine alfabetico. Quindi lo "a".compareTo("b")
userebbe confronti alfabetici. Se si desidera confrontare le stringhe su lunghezza, è necessario scrivere un comparatore personalizzato.
In breve, non c'è molta differenza. Sono entrambi fini a mezzi simili. In generale si può eseguire un confronto per l'ordine naturale (la definizione naturale dell'ordine è ovviamente aperta all'interpretazione) e scrivere un comparatore per altre esigenze di ordinamento o confronto.
http://grdurand.com/static/presentation_four/comparable.html –
Inoltre, un duplicato di: [Quando utilizzare comparabili e Comparatori] (http://stackoverflow.com/q/2266827/642706). –
Link di esempio eccellente. Semplice e chiaro Leggi. – Androidster