logo

Java Comparable інтерфейс

Інтерфейс Java Comparable використовується для впорядкування об’єктів визначеного користувачем класу. Цей інтерфейс міститься в пакеті java.lang і містить лише один метод під назвою compareTo(Object). Він забезпечує лише одну послідовність сортування, тобто ви можете сортувати елементи лише на основі одного елемента даних. Наприклад, це може бути роллно, ім'я, вік або щось інше.

метод compareTo(Object obj).

public int compareTo(Object obj): Він використовується для порівняння поточного об’єкта з вказаним об’єктом. Воно повертається

  • натуральне число, якщо поточний об'єкт більший за вказаний об'єкт.
  • від'ємне ціле число, якщо поточний об'єкт менший за вказаний об'єкт.
  • нуль, якщо поточний об'єкт дорівнює зазначеному об'єкту.

Ми можемо сортувати елементи:

  1. Рядкові об'єкти
  2. Об'єкти класу-огортки
  3. Визначені користувачем об'єкти класу

Клас колекції

Колекції клас надає статичні методи для сортування елементів колекцій. Якщо елементи колекції мають Set або Map, ми можемо використовувати TreeSet або TreeMap. Однак ми не можемо сортувати елементи списку. Клас Collections надає методи для сортування елементів типу List.

Метод класу Collections для сортування елементів List

public void сортування (список списку): Він використовується для сортування елементів списку. Елементи списку мають бути типу Comparable.

Примітка. Класи String і Wrapper реалізують інтерфейс Comparable за замовчуванням. Отже, якщо ви зберігаєте об’єкти рядків або класів-оболонок у списку, наборі чи карті, за замовчуванням він буде порівняним.


Порівняний приклад Java

Давайте розглянемо приклад інтерфейсу Comparable, який сортує елементи списку за віком.

Файл: 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; } } 

Файл: 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 

Приклад Java Comparable: у зворотному порядку

Давайте розглянемо той самий приклад інтерфейсу Comparable, який сортує елементи списку за віком у зворотному порядку.

Файл: 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