„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
Palyginamas | Palyginimo 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.javaclass 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