Comparable<T> définit un ordre naturel pour une classe via compareTo, utilisé par Collections.sort et TreeSet. Comparator<T> définit un ordre externe, ou plusieurs, via compare. Les deux retournent un entier négatif, nul ou positif selon que le premier est inférieur, égal ou supérieur au second.
Exemple
class Personne implements Comparable<Personne> {
public int compareTo(Personne o) { return nom.compareTo(o.nom); }
}