Interfață Java Comparator este folosit pentru a ordona obiectele unei clase definite de utilizator.
Această interfață se găsește în pachetul java.util și conține 2 metode compare (Object obj1, Object obj2) și equals (Object element).
Oferă mai multe secvențe de sortare, adică puteți sorta elementele pe baza oricărui membru al datelor, de exemplu, rollno, nume, vârstă sau orice altceva.
Metode ale interfeței de comparare Java
Metodă | Descriere |
---|---|
public int compară (Obiect obj1, Object obj2) | Compară primul obiect cu al doilea obiect. |
public boolean equals(Object object) | Este folosit pentru a compara obiectul curent cu obiectul specificat. |
public boolean equals(Object object) | Este folosit pentru a compara obiectul curent cu obiectul specificat. |
Metodă | Descriere |
---|---|
int compara(T o1, T o2) | Compară primul obiect cu al doilea obiect. |
static | Acceptă o funcție care extrage o cheie de sortare comparabilă dintr-un tip T și returnează un comparator care compară după acea cheie de sortare. |
Comparator static comparator (Extractor de taste funcționale, Comparator de taste de comparație) | Acceptă o funcție care extrage o cheie de sortare dintr-un tip T și returnează un Comparator care compară după acea cheie de sortare folosind Comparatorul specificat. |
Comparator static comparingDouble(ToDoubleFunction keyExtractor) | Acceptă o funcție care extrage o cheie de sortare dublă dintr-un tip T și returnează un Comparator care compară după acea cheie de sortare. |
Comparator static comparingInt(ToIntFunction keyExtractor) | Acceptă o funcție care extrage o cheie de sortare int dintr-un tip T și returnează un Comparator care compară cu acea cheie de sortare. |
Comparator static comparingLong(ToLongFunction keyExtractor) | Acceptă o funcție care extrage o cheie de sortare lungă dintr-un tip T și returnează un Comparator care compară după acea cheie de sortare. |
boolean este egal(obiect obiect) | Este folosit pentru a compara obiectul curent cu obiectul specificat. |
static | Returnează un comparator care compară obiecte comparabile în ordine naturală. |
static Comparator nullsFirst(Comparator comparator) | Returnează un comparator care tratează nul ca fiind mai mic decât elementele non-null. |
static Comparator nullsLast(Comparator comparator) | Returnează un comparator care tratează nul ca fiind mai mare decât elementele non-null. |
implicit Comparator inversat() | Returnează comparatorul care conține ordinea inversă a comparatorului furnizat. |
static | Returnează un comparator care conține inversul ordinii naturale. |
implicit Comparator apoi Comparing (Comparator altul) | Returnează un comparator de ordine lexicografică cu un alt comparator. |
Mod implicitComparator apoi Comparare (Tasta funcționalăExtractor) | Returnează un comparator de ordine lexicografică cu o funcție care extrage o cheie de sortare comparabilă. |
Comparator implicit, apoi Comparare (Tasta funcționalăExtractor, Comparator cheie Comparator) | Returnează un comparator de ordine lexicografică cu o funcție care extrage o cheie pentru a fi comparată cu Comparatorul dat. |
Comparator implicit apoi ComparingDouble(ToDoubleFunction keyExtractor) | Returnează un comparator de ordine lexicografică cu o funcție care extrage o cheie de sortare dublă. |
implicit Comparator thenComparingInt(ToIntFunction keyExtractor) | Returnează un comparator de ordine lexicografică cu o funcție care extrage o cheie de sortare int. |
Comparator implicit apoi ComparingLong(ToLongFunction keyExtractor) | Returnează un comparator de ordine lexicografică cu o funcție care extrage o cheie de sortare lungă. |
Exemplu de comparator Java 8
Să vedem exemplul de sortare a elementelor Listă pe baza vârstei și numelui.
Fișier: 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; } }
Fișier: 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
Exemplu comparator Java 8: metoda nullsFirst() și nullsLast().
Aici, sortăm lista de elemente care conține și null.
Fișier: 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; } }
Fișier: 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