logo

Interfejs porównywalny z Javą

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:

  1. Obiekty ciągowe
  2. Obiekty klasy otoki
  3. 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,&apos;Vijay&apos;,23)); al.add(new Student(106,&apos;Ajay&apos;,27)); al.add(new Student(105,&apos;Jai&apos;,21)); Collections.sort(al); for(Student st:al){ System.out.println(st.rollno+&apos; &apos;+st.name+&apos; &apos;+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