logo

Јава Цомпаратор интерфејс

Јава Цомпаратор интерфејс се користи за наручивање објеката кориснички дефинисане класе.

Овај интерфејс се налази у пакету јава.утил и садржи 2 методе цомпаре(Објецт обј1,Објецт обј2) и екуалс(Објецт елемент).

Пружа вишеструке секвенце сортирања, тј. можете сортирати елементе на основу било ког члана података, на пример, роллно, име, старост или било шта друго.

Методе Јава Цомпаратор Интерфаце

МетодОпис
публиц инт цомпаре (Објецт обј1, Објецт обј2)Она упоређује први објекат са другим објектом.
јавни логички једнак (Објецт обј)Користи се за упоређивање тренутног објекта са наведеним објектом.
јавни логички једнак (Објецт обј)Користи се за упоређивање тренутног објекта са наведеним објектом.

Цоллецтионс цласс

Збирке класа обезбеђује статичке методе за сортирање елемената колекције. Ако су елементи колекције скуп или мапа, можемо користити ТрееСет или ТрееМап. Међутим, не можемо сортирати елементе Листе. Класа Цоллецтионс такође пружа методе за сортирање елемената елемената типа Лист.

Метод класе Цоллецтионс за сортирање елемената листе

јавно сортирање празнина (листа листе, компаратор ц): се користи за сортирање елемената листе према датом компаратору.


Пример Јава компаратора (негенерички стари стил)

Погледајмо пример сортирања елемената Листе на основу старости и имена. У овом примеру, направили смо 4 јава класе:

  1. Студент.јава
  2. АгеЦомпаратор.јава
  3. НамеЦомпаратор.јава
  4. Симпле.јава
Студент.јава

Ова класа садржи три поља роллно, име и старост и параметризовани конструктор.

 class Student{ int rollno; String name; int age; Student(int rollno,String name,int age){ this.rollno=rollno; this.name=name; this.age=age; } } 
АгеЦомпаратор.јава

Ова класа дефинише логику поређења на основу узраста. Ако је старост првог објекта већа од другог, враћамо позитивну вредност. То може бити било ко као што је 1, 2, 10. Ако је старост првог објекта мања од другог објекта, враћамо негативну вредност, то може бити било која негативна вредност, а ако је старост оба објекта једнака, враћамо 0.

 import java.util.*; class AgeComparator implements Comparator{ public int compare(Object o1,Object o2){ Student s1=(Student)o1; Student s2=(Student)o2; if(s1.age==s2.age) return 0; else if(s1.age>s2.age) return 1; else return -1; } } 
НамеЦомпаратор.јава

Ова класа пружа логику поређења на основу имена. У том случају користимо метод цомпареТо() класе Стринг, који интерно обезбеђује логику поређења.

 import java.util.*; class NameComparator implements Comparator{ public int compare(Object o1,Object o2){ Student s1=(Student)o1; Student s2=(Student)o2; return s1.name.compareTo(s2.name); } } 
Симпле.јава

У овој класи штампамо вредности објекта сортирањем на основу имена и старости.

 import java.util.*; import java.io.*; class Simple{ 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)); System.out.println('Sorting by Name'); Collections.sort(al,new NameComparator()); Iterator itr=al.iterator(); while(itr.hasNext()){ Student st=(Student)itr.next(); System.out.println(st.rollno+' '+st.name+' '+st.age); } System.out.println('Sorting by age'); Collections.sort(al,new AgeComparator()); Iterator itr2=al.iterator(); while(itr2.hasNext()){ Student st=(Student)itr2.next(); 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 

Пример Јава компаратора (генерички)

Студент.јава
 class Student{ int rollno; String name; int age; Student(int rollno,String name,int age){ this.rollno=rollno; this.name=name; this.age=age; } } 
АгеЦомпаратор.јава
 import java.util.*; class AgeComparator implements Comparator{ public int compare(Student s1,Student s2){ if(s1.age==s2.age) return 0; else if(s1.age>s2.age) return 1; else return -1; } } 
НамеЦомпаратор.јава

Ова класа пружа логику поређења на основу имена. У том случају користимо метод цомпареТо() класе Стринг, који интерно обезбеђује логику поређења.

 import java.util.*; class NameComparator implements Comparator{ public int compare(Student s1,Student s2){ return s1.name.compareTo(s2.name); } } 
Симпле.јава

У овој класи штампамо вредности објекта сортирањем на основу имена и старости.

 import java.util.*; import java.io.*; class Simple{ 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)); System.out.println('Sorting by Name'); Collections.sort(al,new NameComparator()); for(Student st: al){ System.out.println(st.rollno+' '+st.name+' '+st.age); } System.out.println('Sorting by age'); Collections.sort(al,new AgeComparator()); 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 

Јава 8 Цомпаратор интерфејс

Јава 8 Цомпаратор интерфејс је функционални интерфејс који садржи само једну апстрактну методу. Сада можемо да користимо интерфејс Цомпаратор као циљ додељивања за ламбда израз или референцу методе.

Методе Јава 8 Цомпаратор Интерфаце

МетодОпис
инт упореди (Т о1, Т о2)Упоређује први објекат са другим објектом.
статичнаПоређење компаратора (Фунцтион кеиЕктрацтор)Прихвата функцију која издваја упоредни кључ сортирања из типа Т и враћа упоредни кључ који упоређује по том кључу за сортирање.
статичко поређење компаратора (Фунцтион кеиЕктрацтор, Цомпаратор кеиЦомпаратор)Прихвата функцију која издваја кључ за сортирање из типа Т и враћа компаратор који упоређује по том кључу за сортирање користећи специфицирани компаратор.
статички компаратор цомпарингДоубле(ТоДоублеФунцтион кеиЕктрацтор)Прихвата функцију која издваја двоструки кључ за сортирање из типа Т и враћа компаратор који упоређује по том кључу за сортирање.
статички компаратор цомпарингИнт(ТоИнтФунцтион кеиЕктрацтор)Прихвата функцију која издваја инт кључ сортирања из типа Т и враћа компаратор који упоређује по том кључу сортирања.
статички компаратор цомпарингЛонг(ТоЛонгФунцтион кеиЕктрацтор)Прихвата функцију која издваја дуг кључ за сортирање из типа Т и враћа компаратор који упоређује по том кључу за сортирање.
боолеан једнако (Објецт обј)Користи се за упоређивање тренутног објекта са наведеним објектом.
статичнаКомпаратор натуралОрдер()Враћа компаратор који упоређује упоредиве објекте природним редоследом.
статички компаратор нуллсФирст(компаратор компаратор)Враћа компаратор који третира нулл као мање од не-нултих елемената.
статички компаратор нуллсЛаст(компаратор компаратор)Враћа компаратор који третира нулл као веће од елемената који нису нули.
подразумевани компаратор реверсед()Враћа компаратор који садржи обрнути редослед датог компаратора.
статичнаКомпаратор реверсеОрдер()Враћа компаратор који садржи обрнуто од природног уређења.
подразумевано упоређивање затим упоређивање (компаратор друго)Враћа компаратор лексикографског реда са другим компаратором.
УобичајеноКомпаратор затим Упоређивање (Функционални кључ Екстрактор)Враћа компаратор лексикографског реда са функцијом која издваја кључ за сортирање упоредивих.
подразумевани компаратор затим упоређивање (функцијски кључ Екстрактор, компаратор кључ компаратор)Враћа компаратор лексикографског реда са функцијом која издваја кључ који треба да се упореди са датим компаратором.
подразумевани Цомпаратор тхенЦомпарингДоубле(ТоДоублеФунцтион кеиЕктрацтор)Враћа компаратор лексикографског реда са функцијом која издваја кључ за двоструко сортирање.
подразумевани Цомпаратор тхенЦомпарингИнт(ТоИнтФунцтион кеиЕктрацтор)Враћа компаратор лексикографског реда са функцијом која издваја инт кључ за сортирање.
подразумевани компаратор затимЦомпарингЛонг(ТоЛонгФунцтион кеиЕктрацтор)Враћа компаратор лексикографског реда са функцијом која издваја дуг кључ за сортирање.

Пример Јава 8 компаратора

Погледајмо пример сортирања елемената Листе на основу старости и имена.

Фајл: Студент.јава

 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; } } 

Датотека: ТестСорт1.јава

 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 

Пример Јава 8 компаратора: метод нуллсФирст() и нуллсЛаст().

Овде сортирамо листу елемената која такође садржи нулл.

Фајл: Студент.јава

 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; } } 

Датотека: ТестСорт2.јава

 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