logo

Az összehasonlító és az összehasonlító közötti különbség

A Comparable és a Comparator egyaránt interfész, és használható gyűjteményelemek rendezésére.

Az alábbiakban bemutatott összehasonlító és összehasonlító interfészek között azonban sok különbség van.

HasonlóÖsszehasonlító
1) Az összehasonlítható biztosít a egyetlen rendezési sorrend . Más szavakkal, a gyűjteményt egyetlen elem, például azonosító, név és ár alapján rendezhetjük.Az Összehasonlító biztosítja több rendezési szekvencia . Más szavakkal, a gyűjteményt több elem alapján is rendezhetjük, például azonosító, név, ár stb.
2) Összehasonlítható az eredeti osztályt érinti , azaz a tényleges osztály módosul.Összehasonlító nem befolyásolja az eredeti osztályt , azaz a tényleges osztály nem módosul.
3) Összehasonlítható biztosít Összehasonlítás() metódus elemek rendezéséhez.A Comparator biztosítja Összehasonlítás() metódus elemek rendezéséhez.
4) Összehasonlítható benne van java.lang csomag.Összehasonlító található a java.util csomag.
5) Az Összehasonlítható típusú listaelemeket a szerint rendezhetjük Collections.sort(Lista) módszer.A Comparator típusú listaelemeket a szerint rendezhetjük Collections.sort (lista, összehasonlító) módszer.

Java összehasonlítható példa

Lássuk a példát egy Comparable felületre, amely életkor alapján rendezi a listaelemeket.

Fájl: 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); } } } 
Tesztelje most

Kimenet:

 105 Jai 21 101 Vijay 23 106 Ajay 27 

Java összehasonlító példa

Lássunk egy példát a Java Comparator felületre, ahol egy lista elemeit különböző összehasonlítók segítségével rendezzük.

Diák.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

Ez az osztály összehasonlítási logikát biztosít a név alapján. Ebben az esetben a String osztály Összehasonlítási () metódusát használjuk, amely belsőleg biztosítja az összehasonlítási logikát.

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

Ebben az osztályban név és életkor alapján rendezve nyomtatjuk ki az objektum értékeit.

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

Kimenet:

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