logo

Разлика између упоредног и компаратора

Цомпарабле и Цомпаратор су интерфејси и могу се користити за сортирање елемената колекције.

Међутим, постоје многе разлике између упоредивих и упоредних интерфејса које су дате у наставку.

УпоредивоЦомпаратор
1) Упоредиви пружа а један редослед сортирања . Другим речима, можемо сортирати колекцију на основу једног елемента као што су ид, име и цена.Компаратор пружа вишеструке секвенце сортирања . Другим речима, можемо сортирати колекцију на основу више елемената као што су ид, име, цена итд.
2) Упоредиви утиче на првобитну класу , тј. стварна класа је модификована.Цомпаратор не утиче на оригиналну класу , тј. стварна класа није модификована.
3) Упоредиви пружа цомпареТо() метода за сортирање елемената.Компаратор пружа цомпаре() метода за сортирање елемената.
4) Упоредиви је присутан у јава.ланг пакет.Компаратор је присутан у јава.утил пакет.
5) Елементе листе упоредивог типа можемо сортирати по Цоллецтионс.сорт(Лист) методом.Елементе листе типа Цомпаратор можемо сортирати по Цоллецтионс.сорт(Листа, Цомпаратор) методом.

Јава Цомпарабле Пример

Хајде да видимо пример упоредног интерфејса који сортира елементе листе на основу старости.

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

 //Java Program to demonstrate the use of Java Comparable. //Creating a class which implements Comparable Interface import java.util.*; import java.io.*; class Student implements Comparable{ int rollno; String name; int age; Student(int rollno,String name,int age){ this.rollno=rollno; this.name=name; this.age=age; } public int compareTo(Student st){ if(age==st.age) return 0; else if(age>st.age) return 1; else return -1; } } //Creating a test class to sort the elements public class TestSort3{ 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)); Collections.sort(al); for(Student st:al){ System.out.println(st.rollno+' '+st.name+' '+st.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); } } 
ТестЦомпаратор.јава

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

 //Java Program to demonstrate the use of Java Comparator import java.util.*; import java.io.*; class TestComparator{ public static void main(String args[]){ //Creating a list of students 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'); //Using NameComparator to sort the elements Collections.sort(al,new NameComparator()); //Traversing the elements of list for(Student st: al){ System.out.println(st.rollno+' '+st.name+' '+st.age); } System.out.println('sorting by Age'); //Using AgeComparator to sort the elements Collections.sort(al,new AgeComparator()); //Travering the list again 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