logo

Atšķirība starp salīdzināmo un salīdzināmo

Gan Comparable, gan Comparator ir saskarnes, un tās var izmantot kolekcijas elementu kārtošanai.

Tomēr ir daudz atšķirību starp salīdzināmajām un salīdzināmajām saskarnēm, kas norādītas tālāk.

SalīdzināmsSalīdzinātājs
1) Salīdzināms nodrošina a viena šķirošanas secība . Citiem vārdiem sakot, mēs varam kārtot kolekciju, pamatojoties uz vienu elementu, piemēram, ID, nosaukumu un cenu.Salīdzinātājs nodrošina vairākas šķirošanas secības . Citiem vārdiem sakot, mēs varam kārtot kolekciju, pamatojoties uz vairākiem elementiem, piemēram, ID, nosaukumu un cenu utt.
2) Salīdzināms ietekmē sākotnējo klasi , t.i., tiek modificēta faktiskā klase.Salīdzinātājs neietekmē sākotnējo klasi , t.i., faktiskā klase netiek mainīta.
3) Salīdzināmi nodrošina salīdzinātTo() metodi kārtot elementus.Salīdzinātājs nodrošina salīdzināt () metodi kārtot elementus.
4) Salīdzināms ir atrodams java.lang iepakojums.Salīdzinātājs ir pieejams java.util iepakojums.
5) Salīdzināmā tipa saraksta elementus varam sakārtot pēc Collections.sort(saraksts) metodi.Mēs varam kārtot Comparator tipa saraksta elementus pēc Collections.sort (saraksts, salīdzinājums) metodi.

Java salīdzināms piemērs

Apskatīsim salīdzināmās saskarnes piemēru, kas kārto saraksta elementus pēc vecuma.

Fails: 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); } } } 
Izmēģiniet to tūlīt

Izvade:

csv fails lasa java
 105 Jai 21 101 Vijay 23 106 Ajay 27 

Java salīdzinājuma piemērs

Apskatīsim Java Comparator saskarnes piemēru, kurā mēs kārtojam saraksta elementus, izmantojot dažādus salīdzinātājus.

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

Šī klase nodrošina salīdzināšanas loģiku, pamatojoties uz nosaukumu. Šādā gadījumā mēs izmantojam String klases metodi salīdzinātTo(), kas iekšēji nodrošina salīdzināšanas loģiku.

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

Šajā klasē mēs drukājam objekta vērtības, šķirojot pēc nosaukuma un vecuma.

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

Izvade:

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