Non mi è chiaro il funzionamento di questo frammento di codice:
codice:
import java.util.Comparator;

public class StringComparator implements Comparator<String> {
    public int compare (String s1, String s2) {
        StringBuilder sb1 = new StringBuilder(s1);
        StringBuilder sb2 = new StringBuilder(s2);
        s1 = sb1.reverse().toString();
        s2 = sb2.reverse().toString();
        return s1.compareTo(s2);
    }
}
codice:
List<String> nomiList = new ArrayList<String>(Arrays.asList(nomi));
System.out.println("List non ordinata");
stampaList(nomiList);
Collections.sort(nomiList, new StringComparator());
System.out.println("List ordinata a stringhe al contrario");
stampaList(nomiList);
In modo particolare non capisco il funzionamento di questa istruzione:
codice:
Collections.sort(nomiList, new StringComparator());
e della classe StringComparator. Come funziona il metodo compare all'interno di quella classe? Non capisco il nesso visto che restituisce un intero (-1, 0, 1 a seconda del risultato del confronto).

Mi aiutate a capire?