Цомпарабле и Цомпаратор су интерфејси и могу се користити за сортирање елемената колекције.
Међутим, постоје многе разлике између упоредивих и упоредних интерфејса које су дате у наставку.
Упоредиво | Цомпаратор |
---|---|
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