Il y a deux cas possible, soit il s'agit d'une liste d'éléments comparables entre eux (qui implémentent l'interface Comparable), comme String, dans ce cas, il y a juste à appeler la méthode "sort" sur une liste. Soit les éléments ne sont pas comparables directement entre eux, et il va falloir implémenter un comparator. Il s'agit simplement d'une classe qui, en lui passant deux objets, va savoir lequel des deux est le plus grand.

Prenons ainsi comme exemple cette classe Personne :

Classe Personne

On aurait deux envies de tri. Par le nom + prenom, ou par l'age. Cela signifie qu'il y a deux comparateurs disponibles sur cette classe.

Un comparator est simple, c'est juste une méthode qui prends deux objets, et qui renvoit un nombre négatif si le premier paramètre est avant le second, un nombre positif dans le cas contraire, et 0 si les deux sont équivalents. Dans le cas de l'age, c'est juste la différence entre les ages. Dans le cas nom + Prenom, c'est délégué aux comparateurs de chaines de caractères.

comparateurs en java

Enfin, il n'y a plus qu'a écrire un petit programme de test, chargé d'appeler l'algorithme de tri. Un premier sur le Nom, puis le prénom, et le second sur l'age :

comparateurs en java

Pour que vous puissiez facilement tester, j'ai mis mon projet eclipse à disposition : comparators.zip