logo

Interface comparável Java

A interface Java Comparable é usada para ordenar os objetos da classe definida pelo usuário. Esta interface é encontrada no pacote java.lang e contém apenas um método chamado compareTo(Object). Ele fornece apenas uma sequência de classificação única, ou seja, você pode classificar os elementos com base apenas em um único membro de dados. Por exemplo, pode ser rollno, nome, idade ou qualquer outra coisa.

Método compareTo (objeto obj)

public int compareTo (Objeto obj): É usado para comparar o objeto atual com o objeto especificado. Ele retorna

  • inteiro positivo, se o objeto atual for maior que o objeto especificado.
  • número inteiro negativo, se o objeto atual for menor que o objeto especificado.
  • zero, se o objeto atual for igual ao objeto especificado.

Podemos classificar os elementos de:

  1. Objetos de string
  2. Objetos de classe wrapper
  3. Objetos de classe definidos pelo usuário

Aula de coleções

Coleções classe fornece métodos estáticos para classificar os elementos das coleções. Se os elementos da coleção forem Set ou Map, podemos usar TreeSet ou TreeMap. No entanto, não podemos classificar os elementos de List. A classe Collections fornece métodos para classificar os elementos dos elementos do tipo List.

Método da classe Collections para classificar os elementos da lista

classificação nula pública (lista de lista): É usado para classificar os elementos da lista. Os elementos da lista devem ser do tipo Comparable.

Nota: As classes String e Wrapper implementam a interface Comparable por padrão. Portanto, se você armazenar os objetos das classes string ou wrapper em uma lista, conjunto ou mapa, ele será Comparável por padrão.


Exemplo comparável de Java

Vejamos o exemplo da interface Comparable que classifica os elementos da lista com base na idade.

Arquivo: Aluno.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; } } 

Arquivo: 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 

Exemplo comparável de Java: ordem reversa

Vejamos o mesmo exemplo da interface Comparable que classifica os elementos da lista com base na idade na ordem inversa.

Arquivo: Aluno.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