Java Comparator felület egy felhasználó által definiált osztály objektumainak rendezésére szolgál.
Ez az interfész a java.util csomagban található, és 2 összehasonlító (Object obj1,Object obj2) és equals (Object element) metódust tartalmaz.
Többféle rendezési sorrendet biztosít, azaz az elemeket tetszőleges adattag alapján rendezheti, például rollno, név, életkor vagy bármi más alapján.
A Java összehasonlító felület módszerei
Módszer | Leírás |
---|---|
publikus int összehasonlítás (objektum objektum1, objektum obj2) | Összehasonlítja az első objektumot a második objektummal. |
nyilvános logikai egyenlő (Obj. objektum) | Az aktuális objektum és a megadott objektum összehasonlítására szolgál. |
nyilvános logikai egyenlő (Obj. objektum) | Az aktuális objektum és a megadott objektum összehasonlítására szolgál. |
Módszer | Leírás |
---|---|
int összehasonlítás (T o1, T o2) | Összehasonlítja az első objektumot a második objektummal. |
statikus | Elfogad egy függvényt, amely kivon egy összehasonlítható rendezési kulcsot a T típusúból, és visszaad egy összehasonlító kulcsot, amely ezzel a rendezési kulccsal hasonlít össze. |
statikus összehasonlító összehasonlítás (Function keyExtractor, Comparator keyComparator) | Elfogad egy függvényt, amely kivon egy T típusú rendezési kulcsot, és visszaad egy Comparatort, amely az adott rendezési kulccsal összehasonlít a megadott Összehasonlító segítségével. |
statikus összehasonlító összehasonlítóDouble (ToDoubleFunction keyExtractor) | Elfogad egy függvényt, amely kettős rendezési kulcsot von ki a T típusúból, és visszaad egy Comparatort, amely ezzel a rendezési kulccsal hasonlít össze. |
statikus összehasonlító összehasonlítóInt (ToIntFunction keyExtractor) | Elfogad egy függvényt, amely kivon egy int rendezési kulcsot a T típusúból, és egy Comparatort ad vissza, amely ezzel a rendezési kulccsal hasonlít össze. |
statikus Comparator ComparingLong (ToLongFunction keyExtractor) | Elfogad egy függvényt, amely kivon egy hosszú rendezési kulcsot a T típusúból, és visszaad egy Comparatort, amely ezzel a rendezési kulccsal hasonlít össze. |
logikai egyenlő (Obj. objektum) | Az aktuális objektum és a megadott objektum összehasonlítására szolgál. |
statikus | Egy összehasonlító eszközt ad vissza, amely az összehasonlítható objektumokat természetes sorrendben hasonlítja össze. |
statikus Comparator nullsFirst (összehasonlító összehasonlító) | Egy olyan összehasonlítót ad vissza, amely a nullát kisebbnek tekinti, mint a nem nulla elemeket. |
statikus Comparator nullsLast(összehasonlító összehasonlító) | Egy olyan összehasonlítót ad vissza, amely a nullát nagyobbnak tekinti, mint a nem nulla elemeket. |
alapértelmezett Comparator fordított() | Olyan összehasonlítót ad vissza, amely a megadott összehasonlító fordított sorrendjét tartalmazza. |
statikus | Olyan összehasonlítót ad vissza, amely a természetes sorrend fordítottját tartalmazza. |
alapértelmezett Összehasonlító, majd Összehasonlítás (egyéb összehasonlító) | Egy lexikográfiai sorrendű összehasonlítót ad vissza egy másik összehasonlítóval. |
alapértelmezettÖsszehasonlító, majd összehasonlítás (Function keyExtractor) | Egy lexikográfiai sorrend-összehasonlítót ad vissza, egy olyan függvénnyel, amely kivonja az Összehasonlítható rendezési kulcsot. |
alapértelmezett Összehasonlító, majd Összehasonlítás (Function keyExtractor, Comparator keyComparator) | Egy lexikográfiai sorrendű összehasonlítót ad vissza egy olyan funkcióval, amely kivon egy kulcsot az adott Összehasonlítóhoz képest. |
alapértelmezett Comparator thenComparingDouble (ToDoubleFunction keyExtractor) | Egy lexikográfiai sorrend-összehasonlítót ad vissza egy kettős rendezési kulcsot kivonó függvénysel. |
alapértelmezett Comparator thenComparingInt(ToIntFunction keyExtractor) | Egy lexikográfiai sorrend-összehasonlítót ad vissza egy int rendezési kulcsot kivonó függvénnyel. |
alapértelmezett Comparator then ComparingLong (ToLongFunction keyExtractor) | Egy lexikográfiai sorrend-összehasonlítót ad vissza egy hosszú rendezési kulcsot kivonó függvénnyel. |
Java 8 összehasonlító példa
Lássuk a Lista elemeinek életkor és név szerinti rendezési példáját.
Fájl: 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; } }
Fájl: 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
Java 8 összehasonlító példa: nullsFirst() és nullsLast() metódus
Itt rendezzük a nullát is tartalmazó elemek listáját.
Fájl: 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; } }
Fájl: 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