logo

Rozdiel medzi porovnateľným a komparátorom

Porovnateľné a porovnávacie sú rozhrania a možno ich použiť na triedenie prvkov kolekcie.

Existuje však veľa rozdielov medzi porovnateľnými a porovnávacími rozhraniami, ktoré sú uvedené nižšie.

PorovnateľnéPorovnávač
1) Porovnateľné poskytuje a jediná postupnosť triedenia . Inými slovami, kolekciu môžeme triediť na základe jedného prvku, ako je id, názov a cena.Porovnávač poskytuje viacnásobné triediace sekvencie . Inými slovami, kolekciu môžeme triediť na základe viacerých prvkov, ako je id, názov a cena atď.
2) Porovnateľné ovplyvňuje pôvodnú triedu , t.j. skutočná trieda je upravená.Porovnávač neovplyvňuje pôvodnú triedu , t.j. skutočná trieda sa nemení.
3) Porovnateľné ponuky metóda porovnať() triediť prvky.Porovnávač poskytuje metóda porovnať(). triediť prvky.
4) Porovnateľné je prítomné v java.lang balík.Komparátor je prítomný v java.util balík.
5) Prvky zoznamu typu Porovnateľné môžeme triediť podľa Collections.sort(Zoznam) metóda.Prvky zoznamu typu Porovnávač môžeme triediť podľa Collections.sort(Zoznam, Porovnávač) metóda.

Java porovnateľný príklad

Pozrime sa na príklad porovnateľného rozhrania, ktoré triedi prvky zoznamu na základe veku.

Súbor: 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); } } } 
Vyskúšajte to

Výkon:

 105 Jai 21 101 Vijay 23 106 Ajay 27 

Príklad Java Comparator

Pozrime sa na príklad rozhrania Java Comparator, kde triedime prvky zoznamu pomocou rôznych porovnávačov.

Študent.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; } } 
NameComparator.java

Táto trieda poskytuje logiku porovnávania na základe názvu. V takom prípade používame metódu CompareTo() triedy String, ktorá interne poskytuje porovnávaciu logiku.

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

V tejto triede tlačíme hodnoty objektu triedením na základe mena a veku.

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

Výkon:

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