Interfejs Java Comparable służy do porządkowania obiektów klasy zdefiniowanej przez użytkownika. Interfejs ten znajduje się w pakiecie java.lang i zawiera tylko jedną metodę o nazwie CompareTo(Object). Zapewnia tylko pojedynczą kolejność sortowania, tj. możesz sortować elementy tylko na podstawie jednego elementu danych. Może to być na przykład rollno, imię, wiek lub cokolwiek innego.
CompareTo(Object obj) metoda
public int CompareTo(obiekt obiektu): Służy do porównania bieżącego obiektu z określonym obiektem. To powraca
shweta tiwari
- dodatnia liczba całkowita, jeśli bieżący obiekt jest większy niż określony obiekt.
- ujemna liczba całkowita, jeśli bieżący obiekt jest mniejszy niż określony obiekt.
- zero, jeśli bieżący obiekt jest równy określonemu obiektowi.
Możemy sortować elementy:
- Obiekty ciągowe
- Obiekty klasy otoki
- Obiekty klas zdefiniowane przez użytkownika
Klasa Kolekcje
Kolekcje class udostępnia statyczne metody sortowania elementów kolekcji. Jeśli elementy kolekcji są typu Set lub Map, możemy użyć TreeSet lub TreeMap. Nie możemy jednak sortować elementów Listy. Klasa Collections udostępnia metody sortowania elementów typu List.
Metoda klasy Collections służąca do sortowania elementów listy
public void sort (Lista list): Służy do sortowania elementów Listy. Elementy listy muszą być typu Comparable.
Uwaga: Klasa String i Klasa Wrapper domyślnie implementują interfejs Comparable. Jeśli więc przechowujesz obiekty klas ciągów lub klas opakowań na liście, zestawie lub mapie, domyślnie będzie to Porównywalne.
Porównywalny przykład Java
Zobaczmy przykład interfejsu Comparable, który sortuje elementy listy na podstawie wieku.
program c dla tablicy dwuwymiarowej
Plik: 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; } }
Plik: 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
Porównywalny przykład Java: odwrotna kolejność
Zobaczmy ten sam przykład interfejsu Comparable, który sortuje elementy listy na podstawie wieku w odwrotnej kolejności.
Plik: 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