Comment bien trier en java
Par kadreg, samedi 11 avril 2009 à 18:42 :: Programmation :: #111 :: rss
Trier est un besoin régulier dans de nombreux programmes. C'est aussi toute une série d'algorithmes plus ou moins ragoutants que l'on apprends en école, avant de laborieusement les appliquer. Java, comme de nombreux langages de programmation, vient avec une méthode de trie dans son API. Ici, elle est dans la classe java.util.Collections.
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 :
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.
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 :
Pour que vous puissiez facilement tester, j'ai mis mon projet eclipse à disposition : comparators.zip
Commentaires
Aucun commentaire pour le moment.
Ajouter un commentaire