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āms | Salī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:
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