logo

Rozdíl mezi srovnatelným a komparátorem

Comparable a Comparator jsou rozhraní a lze je použít k třídění prvků kolekce.

Existuje však mnoho rozdílů mezi rozhraními Comparable a Comparator, které jsou uvedeny níže.

jak třídit seznam polí v jazyce Java
SrovnatelnýKomparátor
1) Srovnatelné poskytuje a jediná třídicí sekvence . Jinými slovy, můžeme kolekci třídit na základě jediného prvku, jako je id, název a cena.Srovnávač poskytuje více sekvencí řazení . Jinými slovy, můžeme kolekci třídit na základě více prvků, jako je id, název a cena atd.
2) Srovnatelné ovlivňuje původní třídu , tj. skutečná třída je upravena.Komparátor neovlivní původní třídu , tj. skutečná třída se nemění.
3) Srovnatelné nabídky metoda CompareTo(). třídit prvky.Komparátor poskytuje metoda Compare(). třídit prvky.
4) Srovnatelné je přítomno v java.lang balík.Komparátor je přítomen v java.util balík.
5) Prvky seznamu typu Porovnatelné můžeme třídit podle Collections.sort(Seznam) metoda.Prvky seznamu typu Komparátor můžeme třídit podle Collections.sort(Seznam, Komparátor) metoda.

Java srovnatelný příklad

Podívejme se na příklad rozhraní Comparable, které třídí prvky seznamu na základě věku.

Soubor: TestSort3.java

pole řazení 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); } } } 
Otestujte to hned

Výstup:

 105 Jai 21 101 Vijay 23 106 Ajay 27 

Příklad komparátoru Java

Podívejme se na příklad rozhraní Java Comparator, kde třídíme prvky seznamu pomocí různých komparátorů.

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

Tato třída poskytuje logiku porovnání založenou na názvu. V takovém případě používáme metodu CompareTo() třídy String, která interně poskytuje logiku porovnání.

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

V této třídě tiskneme hodnoty objektu řazením na základě jména a věku.

 //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ýstup:

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