Vmesnik Java Comparator se uporablja za urejanje objektov uporabniško definiranega razreda.
Ta vmesnik je v paketu java.util in vsebuje 2 metodi compare(Object obj1,Object obj2) in equals(Object element).
Omogoča več zaporedij razvrščanja, kar pomeni, da lahko elemente razvrstite na podlagi katerega koli podatkovnega člana, na primer rollno, ime, starost ali karkoli drugega.
Metode vmesnika Java Comparator
Metoda | Opis |
---|---|
public int compare(Object obj1, Object obj2) | Primerja prvi objekt z drugim objektom. |
javno logično je enako (objekt obj) | Uporablja se za primerjavo trenutnega predmeta z navedenim objektom. |
javno logično je enako (objekt obj) | Uporablja se za primerjavo trenutnega predmeta z navedenim objektom. |
Metoda | Opis |
---|---|
int primerjava (T o1, T o2) | Primerja prvi objekt z drugim objektom. |
statična | Sprejme funkcijo, ki izvleče primerljiv ključ za razvrščanje iz tipa T, in vrne primerjalnik, ki primerja s tem ključem za razvrščanje. |
primerjava statičnega primerjalnika (Function keyExtractor, Comparator keyComparator) | Sprejme funkcijo, ki izvleče ključ za razvrščanje iz vrste T, in vrne primerjalnik, ki primerja s tem ključem za razvrščanje z uporabo navedenega primerjalnika. |
statični primerjalnik comparingDouble(ToDoubleFunction keyExtractor) | Sprejme funkcijo, ki izvleče dvojni ključ za razvrščanje iz tipa T, in vrne primerjalnik, ki primerja s tem ključem za razvrščanje. |
statični primerjalnik comparingInt(ToIntFunction keyExtractor) | Sprejme funkcijo, ki izvleče ključ za razvrščanje int iz tipa T in vrne primerjalnik, ki primerja s tem ključem za razvrščanje. |
statični primerjalnik comparingLong(ToLongFunction keyExtractor) | Sprejme funkcijo, ki izvleče dolg ključ za razvrščanje iz tipa T, in vrne primerjalnik, ki primerja s tem ključem za razvrščanje. |
logično je enako (objekt obj) | Uporablja se za primerjavo trenutnega predmeta z navedenim objektom. |
statična | Vrne primerjalnik, ki primerja primerljive predmete v naravnem vrstnem redu. |
statični primerjalnik nullsFirst(primerjalnik primerjalnika) | Vrne primerjalnik, ki meni, da je nič manj kot elementi, ki niso ničelni. |
statični primerjalnik nullsLast(primerjalnik primerjalnika) | Vrne primerjalnik, ki meni, da je nič večja od neničelnih elementov. |
privzeti primerjalnik obrnjen() | Vrne primerjalnik, ki vsebuje obratni vrstni red navedenega primerjalnika. |
statična | Vrne primerjalnik, ki vsebuje obratni vrstni red od naravnega. |
privzeti primerjalnik thenComparing(primerjalnik drugo) | Vrne primerjalnik leksikografskega reda z drugim primerjalnikom. |
privzetoPrimerjalnik, nato primerjava (Extractor funkcijskih tipk) | Vrne primerjalnik leksikografskega reda s funkcijo, ki ekstrahira Primerljiv razvrstitveni ključ. |
privzeti primerjalnik thenComparing(Function keyExtractor, Comparator keyComparator) | Vrne primerjalnik leksikografskega reda s funkcijo, ki izlušči ključ za primerjavo z danim primerjalnikom. |
privzeti primerjalnik thenComparingDouble(ToDoubleFunction keyExtractor) | Vrne primerjalnik leksikografskega reda s funkcijo, ki ekstrahira dvojni ključ za razvrščanje. |
privzeti primerjalnik thenComparingInt(ToIntFunction keyExtractor) | Vrne primerjalnik leksikografskega reda s funkcijo, ki ekstrahira ključ za razvrščanje int. |
privzeti primerjalnik thenComparingLong(ToLongFunction keyExtractor) | Vrne primerjalnik leksikografskega reda s funkcijo, ki ekstrahira dolg razvrstitveni ključ. |
Primer primerjalnika Java 8
Oglejmo si primer razvrščanja elementov seznama na podlagi starosti in imena.
Datoteka: 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; } }
Datoteka: 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
Primer primerjalnika Java 8: metoda nullsFirst() in nullsLast().
Tukaj razvrstimo seznam elementov, ki vsebujejo tudi nič.
Datoteka: 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; } }
Datoteka: 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