logo

Razlika med primerljivim in primerjalnim

Oba Comparable in Comparator sta vmesnika in ju je mogoče uporabiti za razvrščanje elementov zbirke.

Vendar pa obstaja veliko razlik med vmesnikoma Comparable in Comparator, ki so navedene spodaj.

PrimerljivoPrimerjalnik
1) Primerljivo zagotavlja a eno zaporedje razvrščanja . Z drugimi besedami, zbirko lahko razvrstimo na podlagi enega elementa, kot so ID, ime in cena.Primerjalnik ponuja več zaporedij razvrščanja . Z drugimi besedami, zbirko lahko razvrstimo na podlagi več elementov, kot so ID, ime in cena itd.
2) Primerljivo vpliva na prvotni razred , tj. dejanski razred je spremenjen.Primerjalnik ne vpliva na prvotni razred , tj. dejanski razred ni spremenjen.
3) Primerljive ponudbe metoda compareTo(). za razvrščanje elementov.Primerjalnik zagotavlja metoda primerjaj(). za razvrščanje elementov.
4) Primerljivo je prisotno v java.lang paket.Primerjalnik je prisoten v java.util paket.
5) Elemente seznama tipa Primerljivo lahko razvrstimo po Collections.sort(Seznam) metoda.Elemente seznama tipa Comparator lahko razvrstimo po Collections.sort(Seznam, Primerjalnik) metoda.

Java primerljiv primer

Oglejmo si primer vmesnika Comparable, ki razvršča elemente seznama na podlagi starosti.

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); } } } 
Preizkusite zdaj

Izhod:

 105 Jai 21 101 Vijay 23 106 Ajay 27 

Primer Java Comparator

Oglejmo si primer vmesnika Java Comparator, kjer razvrščamo elemente seznama z uporabo različnih primerjalnikov.

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

Ta razred nudi logiko primerjave na podlagi imena. V takem primeru uporabljamo metodo compareTo() razreda String, ki interno zagotavlja primerjalno logiko.

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

V tem razredu izpisujemo vrednosti objekta z razvrščanjem na podlagi imena in starosti.

kakšna je velikost zaslona mojega računalnika
 //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); } } } 

Izhod:

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