Interfața comparabilă Java este utilizată pentru a ordona obiectele clasei definite de utilizator. Această interfață se găsește în pachetul java.lang și conține o singură metodă numită compareTo(Object). Oferă doar o singură secvență de sortare, adică puteți sorta elementele numai pe baza unui singur membru de date. De exemplu, poate fi rollno, nume, vârstă sau orice altceva.
metoda compareTo(Object obj).
public int compareTo(Obiect obiect): Este folosit pentru a compara obiectul curent cu obiectul specificat. Se întoarce
leu în comparație cu un tigru
- întreg pozitiv, dacă obiectul curent este mai mare decât obiectul specificat.
- întreg negativ, dacă obiectul curent este mai mic decât obiectul specificat.
- zero, dacă obiectul curent este egal cu obiectul specificat.
Putem sorta elementele din:
- Obiecte string
- Obiecte din clasa Wrapper
- Obiecte de clasă definite de utilizator
Clasa de colecții
Colecții class oferă metode statice de sortare a elementelor colecțiilor. Dacă elementele de colecție sunt Set sau Map, putem folosi TreeSet sau TreeMap. Cu toate acestea, nu putem sorta elementele List. Clasa Collections oferă metode de sortare a elementelor elementelor de tip Listă.
Metoda clasei Collections pentru sortarea elementelor List
public void sort (listă listă): Este folosit pentru a sorta elementele Listă. Elementele listei trebuie să fie de tip Comparabil.
Notă: Clasa String și clasele Wrapper implementează implicit interfața Comparable. Deci, dacă stocați obiectele claselor șir sau wrapper într-o listă, set sau hartă, acesta va fi Comparabil în mod implicit.
Exemplu comparabil Java
Să vedem exemplul interfeței Comparable care sortează elementele listei în funcție de vârstă.
inteligență artificială și agenți inteligenți
Fișier: Student.java
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; } }
Fișier: TestSort1.java
import java.util.*; public class TestSort1{ 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); } } }
105 Jai 21 101 Vijay 23 106 Ajay 27
Exemplu comparabil Java: ordine inversă
Să vedem același exemplu de interfață Comparabil care sortează elementele listei în funcție de vârstă, în ordine inversă.
Fișier: Student.java
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 -1; } < pre> <p>File: TestSort2.java</p> <pre> import java.util.*; public class TestSort2{ 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); } } } </pre> <pre> 106 Ajay 27 101 Vijay 23 105 Jai 21 </pre></st.age)>
106 Ajay 27 101 Vijay 23 105 Jai 21