Introduction
Java est un langage de programmation orienté objet très populaire utilisé pour le développement d’applications. L’une des tâches courantes en programmation est le tri de listes. Le tri est le processus de réorganisation d’une liste d’objets dans un ordre particulier. Il existe plusieurs algorithmes de tri différents, chacun avec ses avantages et ses inconvénients. Dans cet article, nous allons vous montrer comment trier une liste en Java facilement.
Utilisation de la méthode sort ()
La méthode sort() est une méthode statique de la classe Collections qui permet de trier facilement des listes en Java. Cette méthode prend en entrée une liste d’objets et les trie selon l’ordre naturel des objets. Par exemple, si vous triez une liste de chaînes de caractères, la méthode sort () triera la liste dans l’ordre alphabétique.
Voici un exemple simple de tri d’une liste de chaînes de caractères en utilisant la méthode sort ().
import java.util.ArrayList;
import java.util.Collections;
public class Main {
public static void main(String[] args) {
ArrayList liste = new ArrayList();
liste.add("orange");
liste.add("pomme");
liste.add("banane");
Collections.sort(liste);
System.out.println(liste);
}
}
Dans cet exemple, nous avons créé une liste d’objets String et nous avons ajouté trois éléments à la liste. Nous avons ensuite appelé la méthode sort () de la classe Collections et passé notre liste comme argument. Enfin, nous avons utilisé la méthode println() pour imprimer la liste triée.
Le résultat de cet exemple sera :
[banane, orange, pomme]
Comme vous pouvez le voir, la méthode sort () a trié la liste en ordre alphabétique.
La méthode sort () peut également être utilisée pour trier des listes d’objets personnalisés. Dans ce cas, les objets doivent implémenter l’interface Comparable. L’interface Comparable définit une méthode compareTo () qui permet de comparer des objets et de déterminer leur ordre naturel.
Voici un exemple de classe Personne qui implémente l’interface Comparable.
public class Personne implements Comparable {
private String nom;
private int age;
public Personne(String nom, int age) {
this.nom = nom;
this.age = age;
}
public String getNom() {
return nom;
}
public void setNom(String nom) {
this.nom = nom;
}
public int getAge() {
return age;
}
public void setAge(int age) {
this.age = age;
}
@Override
public int compareTo(Personne p) {
return this.nom.compareTo(p.getNom());
}
@Override
public String toString() {
return "Personne{" +
"nom='" + nom + ''' +
", age=" + age +
'}';
}
}
Dans cette classe, nous avons défini deux propriétés nom et age ainsi que les méthodes d’accès correspondantes. Nous avons également implémenté l’interface Comparable et défini la méthode compareTo (). Dans cet exemple, nous avons choisi de trier les objets Personne par nom.
Voici un exemple de tri d’une liste d’objets Personne en utilisant la méthode sort ().
import java.util.ArrayList;
import java.util.Collections;
public class Main {
public static void main(String[] args) {
ArrayList liste = new ArrayList();
liste.add(new Personne("Alice", 25));
liste.add(new Personne("Bob", 30));
liste.add(new Personne("Charlie", 20));
Collections.sort(liste);
System.out.println(liste);
}
}
Dans cet exemple, nous avons créé une liste d’objets Personne et ajouté trois éléments à la liste. Nous avons ensuite appelé la méthode sort () de la classe Collections et passé notre liste comme argument. Enfin, nous avons utilisé la méthode println() pour imprimer la liste triée.
Le résultat de cet exemple sera :
[Personne{nom='Alice', age=25}, Personne{nom='Bob', age=30}, Personne{nom='Charlie', age=20}]
Comme vous pouvez le voir, la méthode sort () a trié la liste en ordre alphabétique par nom.
Utilisation de l’interface Comparator
L’interface Comparator est une interface fonctionnelle qui permet de trier des listes d’objets personnalisés sans avoir à les modifier. Contrairement à l’interface Comparable, qui définit un ordre naturel pour les objets, l’interface Comparator permet de définir un ordre arbitraire pour les objets.
L’interface Comparator définit une méthode compare () qui permet de comparer deux objets et de déterminer leur ordre. La méthode compare () prend en entrée deux arguments de type T (les objets à comparer) et renvoie un entier qui indique leur ordre relatif. Si le premier objet est inférieur au deuxième, la méthode renvoie une valeur négative. Si le premier objet est supérieur au deuxième, la méthode renvoie une valeur positive. Si les deux objets sont égaux, la méthode renvoie zéro.
Voici un exemple de classe Personne qui utilise une classe AgeComparator pour trier des objets Personne par âge.
public class Personne {
private String nom;
private int age;
public Personne(String nom, int age) {
this.nom = nom;
this.age = age;
}
public String getNom() {
return nom;
}
public void setNom(String nom) {
this.nom = nom;
}
public int getAge() {
return age;
}
public void setAge(int age) {
this.age = age;
}
@Override
public String toString() {
return "Personne{" +
"nom='" + nom + ''' +
", age=" + age +
'}';
}
}
import java.util.Comparator;
public class AgeComparator implements Comparator {
@Override
public int compare(Personne p1, Personne p2) {
return p1.getAge() - p2.getAge();
}
}
Dans cette classe, nous avons défini deux propriétés nom et age ainsi que les méthodes d’accès correspondantes. Nous avons également défini une classe AgeComparator qui implémente l’interface Comparator et défini la méthode compare (). Dans cet exemple, nous avons choisi de trier les objets Personne par âge.
Voici un exemple de tri d’une liste d’objets Personne en utilisant la classe AgeComparator.
import java.util.ArrayList;
import java.util.Collections;
public class Main {
public static void main(String[] args) {
ArrayList liste = new ArrayList();
liste.add(new Personne("Alice", 25));
liste.add(new Personne("Bob", 30));
liste.add(new Personne("Charlie", 20));
AgeComparator ageComparator = new AgeComparator();
Collections.sort(liste, ageComparator);
System.out.println(liste);
}
}
Dans cet exemple, nous avons créé une liste d’objets Personne et ajouté trois éléments à la liste. Nous avons ensuite créé une instance de la classe AgeComparator et appelé la méthode sort () de la classe Collections, en passant notre liste et notre instance de AgeComparator comme arguments. Enfin, nous avons utilisé la méthode println() pour imprimer la liste triée.
Le résultat de cet exemple sera :
[Personne{nom='Charlie', age=20}, Personne{nom='Alice', age=25}, Personne{nom='Bob', age=30}]
Comme vous pouvez le voir, la classe AgeComparator a trié la liste en ordre croissant par âge.
Tri d’une liste dans l’ordre inverse
Parfois, il peut être nécessaire de trier une liste dans l’ordre inverse. Par exemple, si vous voulez trier une liste d’objets Personne par âge, mais dans l’ordre décroissant plutôt que croissant, vous pouvez utiliser la méthode reverseOrder () de la classe Collections.
Voici un exemple de tri d’une liste d’objets Personne par âge, dans l’ordre décroissant.
import java.util.ArrayList;
import java.util.Collections;
import java.util.Comparator;
public class Main {
public static void main(String[] args) {
ArrayList liste = new ArrayList();
liste.add(new Personne("Alice", 25));
liste.add(new Personne("Bob", 30));
liste.add(new Personne("Charlie", 20));
Comparator ageComparator = new AgeComparator();
Collections.sort(liste, Collections.reverseOrder(ageComparator));
System.out.println(liste);
}
}
Dans cet exemple, nous avons créé une liste d’objets Personne et ajouté trois éléments à la liste. Nous avons ensuite créé une instance de la classe AgeComparator et appelé la méthode sort () de la classe Collections, en passant notre liste et l’objet retourné par la méthode reverseOrder () comme arguments. Enfin, nous avons utilisé la méthode println() pour imprimer la liste triée.
Le résultat de cet exemple sera :
[Personne{nom='Bob', age=30}, Personne{nom='Alice', age=25}, Personne{nom='Charlie', age=20}]
Comme vous pouvez le voir, la méthode reverseOrder () a trié la liste en ordre décroissant par âge.
Conclusion
Dans cet article, nous avons vu comment trier des listes en Java facilement en utilisant la méthode sort () de la classe Collections et l’interface Comparator. La méthode sort () est très pratique pour trier des listes d’objets selon leur ordre naturel ou pour trier des listes d’objets personnalisés qui implémentent l’interface Comparable. L’interface Comparator est très utile pour trier des listes d’objets personnalisés selon un ordre arbitraire. Enfin, nous avons vu comment trier une liste dans l’ordre inverse en utilisant la méthode reverseOrder () de la classe Collections.
Note : Cet article n'est pas mis à jour régulièrement et peut contenir des informations obsolètes ainsi que des erreurs.