Interfície Java Comparator s'utilitza per ordenar els objectes d'una classe definida per l'usuari.
Aquesta interfície es troba al paquet java.util i conté 2 mètodes compare (Object obj1, Object obj2) i equals (Object element).
Proporciona múltiples seqüències d'ordenació, és a dir, podeu ordenar els elements en funció de qualsevol membre de les dades, per exemple, rollno, nom, edat o qualsevol altra cosa.
Mètodes de la interfície de comparació de Java
Mètode | Descripció |
---|---|
public int compare(Objecte obj1, Objecte obj2) | Compara el primer objecte amb el segon objecte. |
booleà públic és igual a (objecte objecte) | S'utilitza per comparar l'objecte actual amb l'objecte especificat. |
booleà públic és igual a (objecte objecte) | S'utilitza per comparar l'objecte actual amb l'objecte especificat. |
Mètode | Descripció |
---|---|
int compara (T o1, T o2) | Compara el primer objecte amb el segon objecte. |
estàtica | Accepta una funció que extreu una clau d'ordenació comparable d'un tipus T i retorna un comparador que compara amb aquesta clau d'ordenació. |
Comparador estàtic de comparació (Extractor de claus de funció, Comparador de claus de comparació) | Accepta una funció que extreu una clau d'ordenació d'un tipus T i retorna un comparador que compara amb aquesta clau d'ordenació mitjançant el comparador especificat. |
Comparador estàtic que compara el doble (ToDoubleFunction keyExtractor) | Accepta una funció que extreu una clau d'ordenació doble d'un tipus T i retorna un comparador que compara amb aquesta clau d'ordenació. |
Comparador estàtic comparingInt(ToIntFunction keyExtractor) | Accepta una funció que extreu una clau d'ordenació int d'un tipus T i retorna un comparador que compara amb aquesta clau d'ordenació. |
Comparador estàtic comparantLong (ToLongFunction keyExtractor) | Accepta una funció que extreu una clau d'ordenació llarga d'un tipus T i retorna un comparador que compara amb aquesta clau d'ordenació. |
booleà iguals (objecte objecte) | S'utilitza per comparar l'objecte actual amb l'objecte especificat. |
estàtica | Retorna un comparador que compara objectes comparables en ordre natural. |
static Comparator nullsFirst(Comparador de comparació) | Retorna un comparador que considera que els elements nuls són menors que els elements no nuls. |
static Comparator nullsLast (Comparador de comparació) | Retorna un comparador que considera nul com a major que els elements no nuls. |
Comparador predeterminat invertit () | Retorna un comparador que conté l'ordre invers del comparador proporcionat. |
estàtica | Retorna un comparador que conté l'ordre invers de l'ordre natural. |
Comparador per defecte i després Comparació (Comparador altre) | Retorna un comparador d'ordre lexicogràfic amb un altre comparador. |
per defecteComparador i després comparació (Extractor de claus de funció) | Retorna un comparador d'ordre lexicogràfic amb una funció que extreu una clau d'ordenació comparable. |
Comparador predeterminat i després Comparació (Extractor de claus de funció, Comparador de claus de comparació) | Retorna un comparador d'ordre lexicogràfic amb una funció que extreu una clau per comparar amb el comparador donat. |
Comparador predeterminat i després ComparingDouble (ToDoubleFunction keyExtractor) | Retorna un comparador d'ordre lexicogràfic amb una funció que extreu una clau d'ordenació doble. |
Comparador predeterminat i desprésComparingInt(ToIntFunction KeyExtractor) | Retorna un comparador d'ordre lexicogràfic amb una funció que extreu una clau d'ordenació int. |
Comparador predeterminat i després ComparingLong (ToLongFunction keyExtractor) | Retorna un comparador d'ordre lexicogràfic amb una funció que extreu una clau d'ordenació llarga. |
Exemple de comparació de Java 8
Vegem l'exemple d'ordenació dels elements de List en funció de l'edat i el nom.
Fitxer: Student.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; } }
Fitxer: 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 comparació de Java 8: mètode nullsFirst() i nullsLast().
Aquí, ordenem la llista d'elements que també conté null.
Fitxer: Student.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; } }
Fitxer: 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