Java Comparator interfeiss tiek izmantots, lai sakārtotu lietotāja definētas klases objektus.
Šis interfeiss ir atrodams java.util pakotnē un satur 2 metodes, lai salīdzinātu (Object obj1,Object obj2) un vienāds (Object elements).
Tas nodrošina vairākas šķirošanas secības, t.i., jūs varat kārtot elementus, pamatojoties uz jebkuru datu dalībnieku, piemēram, rollno, vārdu, vecumu vai jebko citu.
Java komparatora saskarnes metodes
Metode | Apraksts |
---|---|
publisks int salīdzināt (Objekts obj1, Object obj2) | Tas salīdzina pirmo objektu ar otro objektu. |
publiskais Būla vienāds (Objekta objekts) | To izmanto, lai salīdzinātu pašreizējo objektu ar norādīto objektu. |
publiskais Būla vienāds (Objekta objekts) | To izmanto, lai salīdzinātu pašreizējo objektu ar norādīto objektu. |
Metode | Apraksts |
---|---|
int salīdzināt (T o1, T o2) | Tas salīdzina pirmo objektu ar otro objektu. |
statisks | Tā pieņem funkciju, kas izvelk salīdzināmo kārtošanas atslēgu no tipa T, un atgriež salīdzinājumu, kas salīdzina pēc šīs kārtošanas atslēgas. |
statiskā salīdzinājuma salīdzināšana (funkciju taustiņu izvilkšana, salīdzināšanas atslēgas salīdzināšana) | Tā pieņem funkciju, kas izvelk kārtošanas atslēgu no tipa T, un atgriež Comparator, kas salīdzina pēc šīs kārtošanas atslēgas, izmantojot norādīto Comparator. |
statisks Comparator ComparingDouble (ToDoubleFunction keyExtractor) | Tā pieņem funkciju, kas no T tipa izņem dubulto kārtošanas atslēgu, un atgriež salīdzinājumu, kas salīdzina pēc šīs kārtošanas atslēgas. |
statisks Comparator comparingInt (ToIntFunction keyExtractor) | Tā pieņem funkciju, kas izvelk int kārtošanas atslēgu no tipa T, un atgriež Comparator, kas salīdzina pēc šīs kārtošanas atslēgas. |
statisks Comparator ComparingLong (ToLongFunction keyExtractor) | Tā pieņem funkciju, kas no T tipa izvelk garu kārtošanas atslēgu, un atgriež salīdzinājumu, kas salīdzina pēc šīs kārtošanas atslēgas. |
Būla ir vienāds (Objekta objekts) | To izmanto, lai salīdzinātu pašreizējo objektu ar norādīto objektu. |
statisks | Tas atgriež salīdzinātāju, kas salīdzina salīdzināmus objektus dabiskā secībā. |
statisks Comparator nullsFirst(salīdzināšanas salīdzinājums) | Tas atgriež salīdzinājumu, kas uzskata, ka null ir mazāks par elementiem, kas nav nulles. |
statisks Comparator nullsLast(salīdzināšanas komparators) | Tas atgriež salīdzinājumu, kas nulli uzskata par lielāku par elementiem, kas nav nulles. |
noklusējuma Comparator reversed() | Tas atgriež salīdzinātāju, kas satur nodrošinātā salīdzinājuma apgriezto secību. |
statisks | Tas atgriež salīdzinājumu, kurā ir apgriezta dabiskā secība. |
noklusējuma salīdzinājums, tad salīdzinājums (cits salīdzinājums) | Tas atgriež leksikogrāfiskās kārtas salīdzinātāju ar citu salīdzinājumu. |
noklusējumaSalīdzinātājs, pēc tam salīdzināšana (funkciju taustiņu izvilkējs) | Tas atgriež leksikogrāfiskās secības salīdzinātāju ar funkciju, kas izvelk salīdzināmās kārtošanas atslēgu. |
noklusējuma salīdzinājums, pēc tam salīdzināšana (funkciju taustiņu izvilkējs, salīdzināšanas atslēgas salīdzinājums) | Tas atgriež leksikogrāfiskās kārtas salīdzinātāju ar funkciju, kas izvelk atslēgu, kas jāsalīdzina ar doto Comparator. |
noklusējuma Comparator thenComparingDouble (ToDoubleFunction keyExtractor) | Tas atgriež leksikogrāfiskās secības salīdzinājumu ar funkciju, kas iegūst dubultās kārtošanas atslēgu. |
noklusējuma Comparator thenComparingInt(ToIntFunction keyExtractor) | Tas atgriež leksikogrāfiskās secības salīdzinātāju ar funkciju, kas izvelk int kārtošanas atslēgu. |
noklusējuma Comparator then ComparingLong (ToLongFunction keyExtractor) | Tas atgriež leksikogrāfiskās secības salīdzinātāju ar funkciju, kas izvelk garu kārtošanas taustiņu. |
Java 8 salīdzinājuma piemērs
Apskatīsim piemēru par saraksta elementu kārtošanu pēc vecuma un vārda.
Fails: 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; } }
Fails: 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 Comparator Piemērs: nullsFirst() un nullsLast() metode
Šeit mēs sakārtojam to elementu sarakstu, kas satur arī nulli.
Fails: 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; } }
Fails: 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