logo

Razlika između Comparable i Comparator

Comparable i Comparator su sučelja i mogu se koristiti za sortiranje elemenata zbirke.

Međutim, postoje mnoge razlike između sučelja Comparable i Comparator koje su navedene u nastavku.

UsporedivoUsporednik
1) Comparable pruža a pojedinačni niz sortiranja . Drugim riječima, kolekciju možemo sortirati na temelju jednog elementa kao što su ID, naziv i cijena.Komparator pruža više sekvenci sortiranja . Drugim riječima, kolekciju možemo sortirati na temelju više elemenata kao što su ID, naziv i cijena itd.
2) Usporedivi utječe na izvornu klasu , tj. modificira se stvarna klasa.Usporednik ne utječe na izvornu klasu , tj. stvarna klasa nije modificirana.
3) Usporedne ponude compareTo() metoda za sortiranje elemenata.Usporednik pruža metoda usporedi(). za sortiranje elemenata.
4) Usporedivo je prisutno u java.lang paket.Komparator je prisutan u java.util paket.
5) Elemente popisa tipa Comparable možemo sortirati prema Collections.sort(List) metoda.Elemente popisa tipa Comparator možemo sortirati prema Collections.sort(List, Comparator) metoda.

Java usporedivi primjer

Pogledajmo primjer sučelja Comparable koje razvrstava elemente popisa na temelju dobi.

Datoteka: TestSort3.java

 //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); } } } 
Testirajte sada

Izlaz:

strojopis prekidač
 105 Jai 21 101 Vijay 23 106 Ajay 27 

Primjer Java komparatora

Pogledajmo primjer sučelja Java Comparator gdje razvrstavamo elemente popisa pomoću različitih komparatora.

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; } } 
AgeComparator.java
 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; } } 
Usporednik imena.java

Ova klasa pruža logiku usporedbe na temelju naziva. U tom slučaju koristimo metodu compareTo() klase String, koja interno osigurava logiku usporedbe.

 import java.util.*; class NameComparator implements Comparator{ public int compare(Student s1,Student s2){ return s1.name.compareTo(s2.name); } } 
TestComparator.java

U ovoj klasi ispisujemo vrijednosti objekta sortiranjem na temelju imena i starosti.

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

Izlaz:

 Sorting by Name 106 Ajay 27 105 Jai 21 101 Vijay 23 Sorting by Age 105 Jai 21 101 Vijay 23 106 Ajay 27