logo

Skirtumas tarp palyginamo ir lyginamojo

„Comparable“ ir „Comparator“ yra sąsajos ir gali būti naudojamos rinkinio elementams rūšiuoti.

Tačiau yra daug skirtumų tarp palyginimo ir palyginimo sąsajų, pateiktų žemiau.

hiba bukhari
PalyginamasPalyginimo priemonė
1) Palyginamieji numato a viena rūšiavimo seka . Kitaip tariant, kolekciją galime rūšiuoti pagal vieną elementą, pvz., ID, pavadinimą ir kainą.Palyginimo priemonė pateikia kelios rūšiavimo sekos . Kitaip tariant, galime rūšiuoti kolekciją pagal kelis elementus, tokius kaip ID, pavadinimas, kaina ir kt.
2) Palyginti turi įtakos pradinei klasei t.y., tikroji klasė yra modifikuota.Palyginimo priemonė neturi įtakos pradinei klasei , ty tikroji klasė nėra modifikuota.
3) Palyginamos numato palyginimasTo() metodas rūšiuoti elementus.Komparatorius numato Palyginti () metodas rūšiuoti elementus.
4) Panašus yra java.lang paketą.Komparatorius yra java.util paketą.
5) Palyginamo tipo sąrašo elementus galime rūšiuoti pagal Collections.sort (sąrašas) metodas.Lyginamojo tipo sąrašo elementus galime rūšiuoti pagal Collections.sort (sąrašas, lyginamoji priemonė) metodas.

Palyginamas Java pavyzdys

Pažvelkime į palyginamos sąsajos, kuri rūšiuoja sąrašo elementus pagal amžių, pavyzdį.

Failas: TestSort3.java

java formato eilutė
 //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); } } } 
Išbandykite dabar

Išvestis:

 105 Jai 21 101 Vijay 23 106 Ajay 27 

Java palyginimo pavyzdys

Pažiūrėkime „Java Comparator“ sąsajos pavyzdį, kai rūšiuojame sąrašo elementus naudodami skirtingus lyginamuosius įrenginius.

Studentas.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

Ši klasė pateikia palyginimo logiką, pagrįstą pavadinimu. Tokiu atveju mes naudojame palyginimo klasės metodą „CompletTo()“, kuris viduje pateikia palyginimo logiką.

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

Šioje klasėje objekto reikšmes spausdiname rūšiuodami pagal pavadinimą ir amžių.

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

Išvestis:

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