Interface du comparateur Java est utilisé pour classer les objets d'une classe définie par l'utilisateur.
Cette interface se trouve dans le package java.util et contient 2 méthodes compare (Object obj1, Object obj2) et equals (Object element).
Il fournit plusieurs séquences de tri, c'est-à-dire que vous pouvez trier les éléments en fonction de n'importe quelle donnée membre, par exemple le numéro de rôle, le nom, l'âge ou toute autre chose.
Méthodes de l'interface de comparaison Java
Méthode | Description |
---|---|
public int comparer (Objet obj1, Objet obj2) | Il compare le premier objet avec le deuxième objet. |
public booléen égal (Objet obj) | Il est utilisé pour comparer l'objet actuel avec l'objet spécifié. |
public booléen égal (Objet obj) | Il est utilisé pour comparer l'objet actuel avec l'objet spécifié. |
Méthode | Description |
---|---|
int comparer (T o1, T o2) | Il compare le premier objet avec le deuxième objet. |
statique | Il accepte une fonction qui extrait une clé de tri comparable d'un type T et renvoie un comparateur qui compare par cette clé de tri. |
Comparateur statique comparant (Fonction keyExtractor, Comparator keyComparator) | Il accepte une fonction qui extrait une clé de tri d'un type T et renvoie un Comparator qui compare par cette clé de tri à l'aide du Comparator spécifié. |
Comparateur statique comparantDouble (ToDoubleFunction keyExtractor) | Il accepte une fonction qui extrait une clé de tri double d'un type T et renvoie un comparateur qui compare par cette clé de tri. |
Comparateur statique comparantInt (ToIntFunction keyExtractor) | Il accepte une fonction qui extrait une clé de tri int d'un type T et renvoie un comparateur qui compare par cette clé de tri. |
Comparateur statique comparantLong (ToLongFunction keyExtractor) | Il accepte une fonction qui extrait une clé de tri longue d'un type T et renvoie un comparateur qui compare par cette clé de tri. |
booléen égal (Objet obj) | Il est utilisé pour comparer l'objet actuel avec l'objet spécifié. |
statique | Il renvoie un comparateur qui compare les objets comparables dans l'ordre naturel. |
Comparateur statique nullsFirst (Comparateur comparateur) | Il renvoie un comparateur qui traite les éléments nuls comme étant inférieurs aux éléments non nuls. |
Comparateur statique nullsLast (comparateur comparateur) | Il renvoie un comparateur qui considère que les éléments nuls sont supérieurs aux éléments non nuls. |
Comparateur par défaut inversé() | Il renvoie un comparateur qui contient l'ordre inverse du comparateur fourni. |
statique | Il renvoie un comparateur qui contient l'ordre inverse de l'ordre naturel. |
Comparateur par défaut thenComparing (Comparateur autre) | Il renvoie un comparateur d'ordre lexicographique avec un autre comparateur. |
défautComparateur puis Comparaison (Fonction keyExtractor) | Il renvoie un comparateur d'ordre lexicographique avec une fonction qui extrait une clé de tri comparable. |
Comparateur par défaut thenComparing (Fonction keyExtractor, Comparator keyComparator) | Il renvoie un comparateur d'ordre lexicographique avec une fonction qui extrait une clé à comparer avec le comparateur donné. |
Comparateur par défaut thenComparingDouble (ToDoubleFunction keyExtractor) | Il renvoie un comparateur d'ordre lexicographique avec une fonction qui extrait une clé de tri double. |
Comparateur par défaut thenComparingInt (ToIntFunction keyExtractor) | Il renvoie un comparateur d'ordre lexicographique avec une fonction qui extrait une clé de tri int. |
Comparateur par défaut thenComparingLong (ToLongFunction keyExtractor) | Il renvoie un comparateur d'ordre lexicographique avec une fonction qui extrait une clé de tri longue. |
Exemple de comparateur Java 8
Voyons l'exemple du tri des éléments de List en fonction de l'âge et du nom.
Fichier : Étudiant.java
class Student { int rollno; String name; int age; Student(int rollno,String name,int age){ this.rollno=rollno; this.name=name; this.age=age; } public int getRollno() { return rollno; } public void setRollno(int rollno) { this.rollno = rollno; } public String getName() { return name; } public void setName(String name) { this.name = name; } public int getAge() { return age; } public void setAge(int age) { this.age = age; } }
Fichier : TestSort1.java
import java.util.*; public class TestSort1{ public static void main(String args[]){ ArrayList al=new ArrayList(); al.add(new Student(101,'Vijay',23)); al.add(new Student(106,'Ajay',27)); al.add(new Student(105,'Jai',21)); //Sorting elements on the basis of name Comparator cm1=Comparator.comparing(Student::getName); Collections.sort(al,cm1); System.out.println('Sorting by Name'); for(Student st: al){ System.out.println(st.rollno+' '+st.name+' '+st.age); } //Sorting elements on the basis of age Comparator cm2=Comparator.comparing(Student::getAge); Collections.sort(al,cm2); System.out.println('Sorting by Age'); for(Student st: al){ System.out.println(st.rollno+' '+st.name+' '+st.age); } } }
Sorting by Name 106 Ajay 27 105 Jai 21 101 Vijay 23 Sorting by Age 105 Jai 21 101 Vijay 23 106 Ajay 27
Exemple de comparateur Java 8 : méthodes nullsFirst() et nullsLast()
Ici, nous trions la liste des éléments qui contiennent également null.
Fichier : Étudiant.java
class Student { int rollno; String name; int age; Student(int rollno,String name,int age){ this.rollno=rollno; this.name=name; this.age=age; } public int getRollno() { return rollno; } public void setRollno(int rollno) { this.rollno = rollno; } public String getName() { return name; } public void setName(String name) { this.name = name; } public int getAge() { return age; } public void setAge(int age) { this.age = age; } }
Fichier : TestSort2.java
import java.util.*; public class TestSort2{ public static void main(String args[]){ ArrayList al=new ArrayList(); al.add(new Student(101,'Vijay',23)); al.add(new Student(106,'Ajay',27)); al.add(new Student(105,null,21)); Comparator cm1=Comparator.comparing(Student::getName,Comparator.nullsFirst(String::compareTo)); Collections.sort(al,cm1); System.out.println('Considers null to be less than non-null'); for(Student st: al){ System.out.println(st.rollno+' '+st.name+' '+st.age); } Comparator cm2=Comparator.comparing(Student::getName,Comparator.nullsLast(String::compareTo)); Collections.sort(al,cm2); System.out.println('Considers null to be greater than non-null'); for(Student st: al){ System.out.println(st.rollno+' '+st.name+' '+st.age); } } }
Considers null to be less than non-null 105 null 21 106 Ajay 27 101 Vijay 23 Considers null to be greater than non-null 106 Ajay 27 101 Vijay 23 105 null 21