Java Comparator sąsaja naudojamas vartotojo nustatytos klasės objektams sutvarkyti.
Ši sąsaja yra java.util pakete ir apima 2 palyginimo (Object obj1,Object obj2) ir equals (Object element) metodus.
Jame pateikiamos kelios rūšiavimo sekos, t. y. galite rūšiuoti elementus pagal bet kurį duomenų elementą, pavyzdžiui, rollno, vardą, amžių ar bet ką kitą.
Java palyginimo sąsajos metodai
Metodas | apibūdinimas |
---|---|
viešas palyginimas (objektas obj1, objektas obj2) | Jis lygina pirmąjį objektą su antruoju objektu. |
vieša loginė vertė (Objekto objektas) | Jis naudojamas dabartiniam objektui palyginti su nurodytu objektu. |
vieša loginė vertė (Objekto objektas) | Jis naudojamas dabartiniam objektui palyginti su nurodytu objektu. |
Metodas | apibūdinimas |
---|---|
int palyginti (T o1, T o2) | Jis lygina pirmąjį objektą su antruoju objektu. |
statinis | Jis priima funkciją, kuri iš T tipo išskiria palyginamojo rūšiavimo raktą ir grąžina palyginimo priemonę, kuri lygina pagal tą rūšiavimo raktą. |
statinis lygintuvo palyginimas (funkcijų klavišų ištraukėjas, palyginimo klavišų palyginimas) | Jis priima funkciją, kuri išskiria rūšiavimo raktą iš T tipo, ir grąžina palyginiklį, kuris lygina pagal tą rūšiavimo raktą, naudodamas nurodytą palyginiklį. |
statinis palyginimo įrankis, lyginamas „Double“ („ToDoubleFunction keyExtractor“) | Ji priima funkciją, kuri išskiria dvigubą rūšiavimo raktą iš T tipo, ir grąžina palyginimo priemonę, kuri lygina pagal tą rūšiavimo raktą. |
statinis lygintuvas comparingInt (ToIntFunction keyExtractor) | Ji priima funkciją, kuri ištraukia int rūšiavimo raktą iš T tipo, ir grąžina palyginimo priemonę, kuri lygina pagal tą rūšiavimo raktą. |
statinis lyginamasis ilgis (ToLongFunction keyExtractor) | Ji priima funkciją, kuri išskiria ilgą rūšiavimo raktą iš T tipo, ir grąžina palyginimo priemonę, kuri lygina pagal tą rūšiavimo raktą. |
loginis lygus (Objekto objektas) | Jis naudojamas dabartiniam objektui palyginti su nurodytu objektu. |
statinis | Jis pateikia lyginamąjį elementą, kuris lygina palyginamus objektus natūralia tvarka. |
statinis lygintuvas nullsFirst (palyginimo priemonė) | Jis grąžina lyginamąjį elementą, kuris nulinius elementus laiko mažesniais nei nenuliniais elementais. |
statinis lygintuvas nullsLast (palyginimo priemonė) | Jis grąžina lyginamąjį elementą, kuris nulinį elementą traktuoja kaip didesnį nei nenulinį elementą. |
numatytasis lygintuvas atvirkščiai () | Jis grąžina lyginamąjį elementą, kuriame yra atvirkštinė pateikto lygintuvo tvarka. |
statinis | Jis grąžina lyginamąjį elementą, kuriame yra atvirkštinė natūrali tvarka. |
numatytasis lygintuvas, tada palyginimas (kitas palyginimas) | Jis grąžina leksikografinės tvarkos lyginamąjį elementą su kitu lygintuvu. |
numatytasPalyginimas, tada palyginimas (funkcijų klavišų ištraukiklis) | Jis grąžina leksikografinės tvarkos lyginamąjį elementą su funkcija, kuri išskiria palyginamo rūšiavimo raktą. |
numatytasis lygintuvas, tada palyginimas (funkcijų klavišų ištraukėjas, palyginimo klavišų palyginimas) | Jis grąžina leksikografinės tvarkos lyginamąjį elementą su funkcija, kuri išskiria raktą, kuris bus lyginamas su nurodytu lygintuvu. |
numatytasis lyginamasis įrankis, tada lyginamasis dubuo (ToDoubleFunction keyExtractor) | Jis grąžina leksikografinės tvarkos lyginamąjį elementą su funkcija, kuri išskiria dvigubą rūšiavimo raktą. |
numatytasis lygintuvas, tada ComparingInt (ToIntFunction keyExtractor) | Jis grąžina leksikografinės tvarkos lyginamąjį elementą su funkcija, kuri išskiria int rūšiavimo raktą. |
numatytasis lygintuvas, tada palyginimas ilgas (ToLongFunction keyExtractor) | Jis grąžina leksikografinės tvarkos lyginamąjį elementą su funkcija, kuri išskiria ilgą rūšiavimo raktą. |
Java 8 palyginimo pavyzdys
Pažvelkime į Sąrašo elementų rūšiavimo pagal amžių ir vardą pavyzdį.
Failas: 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; } }
Failas: 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 palyginimo pavyzdys: nullsFirst() ir nullsLast() metodas
Čia surūšiuojame elementų, kuriuose taip pat yra nulis, sąrašą.
Failas: 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; } }
Failas: 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