Recomendado, 2024

Escolha Do Editor

Diferença entre Comparável e Comparador em Java

Comparável e Comparador são as interfaces genéricas em Java usadas para comparar os elementos de dados dos objetos. A interface Comparable está presente no pacote java.lang e a interface do Comparador está presente no pacote java.util. A diferença básica entre as interfaces Comparable e Comparator é que a interface Comparable fornece a sequência de classificação única, enquanto a interface Comparator fornece as várias sequências de classificação. Existem algumas outras diferenças entre as interfaces Comparável e Comparador, as quais estudaremos no Gráfico de Comparação.

Gráfico de comparação

Base para ComparaçãoComparávelComparador
BasicA interface Comparable permite apenas uma única sequência de classificação.A interface do Comparador permite várias sequências de classificação.
PacotesA interface Comparable está presente no pacote java.lang.A interface do Comparador está presente no pacote java.util.
MétodosA interface Comparable contém apenas um método
public int compareTo (objeto obj);
A interface do Comparador contém dois métodos
public int compare (objeto obj1, objeto obj2)
equals booleanos (objeto obj)
ImplementaçãoInterface comparável é implementada pela classe cujos objetos devem ser comparados.A interface do comparador é implementada por uma classe sperate, em vez da classe cujos objetos devem ser comparados.
ComparaçãoO método compareTo (objeto obj) compara o objeto que é usado para invocar o método com o objeto especificado passa para o método.O método compare (Object obj1, Object obj2) compara os dois objetos especificados que são passados ​​para o método.
Listar / MatrizQuando uma lista do objeto do tipo Comparable deve ser comparada, a classe Collection fornece um método, ou seja, Collections.sort (List lst).Quando uma lista de objetos do tipo Comparable deve ser comparada, a classe Collection fornece um método, ou seja,
Collections.sort (lista, comparador).

Definição de Comparável

Comparável é uma interface que está disponível no pacote java.lang. Uma classe implementa a interface do Comparador para classificar seu objeto em ordem natural. Os objetos são classificados em ordem natural significa que os objetos são comparados por seus valores ASCII. As classes que implementam a interface Comparable são as classes Byte, Character, Double, Float, Long, Short, String e Integer. Até mesmo a classe Date and Calander também implementa a interface Comparable.

A interface Comparable contém apenas um método que é CompareTo (Object obj). Este método compara o objeto usado para invocar o método com o objeto especificado no parâmetro. A sintaxe do método é a seguinte:

 public int compareTo (objeto obj); 

O método CompareTo (Object obj) retorna 0, quando o objeto comparado pelo método contém o mesmo valor, ele retorna o valor -ve se o objeto de chamada for menor que o objeto especificado e retorna o valor + ve se o objeto de chamada tiver maior valor em comparação com o objeto especificado. A classe Collections fornece um método de classificação para classificar os elementos da lista. Os elementos da lista (e array) do tipo Comparable podem ser classificados usando o método “Collections.sort (List lst)”.

Definição de Comparador

Comparador é uma interface que está disponível no pacote java.util. O comparador de interface não é implementado na classe cujos objetos devem ser comparados, em vez disso, uma classe separada implementa a interface do Comparador, de modo que a lógica de classificação seja aplicada a cada elemento de dados do objeto em uma classe diferente. Comparador contém dois métodos da seguinte maneira:

 public int compare (objeto obj1, objeto obj2) e equals booleanos (objeto obj) 

O método compare () acima compara o primeiro objeto obj1 com o segundo objeto obj2. O método compare () retorna 0 quando o objeto comparado pelo método contém o mesmo valor, ele retorna o valor -ve se o objeto obj1 for menor que o objeto obj2 e retorna o valor + ve se o objeto obj1 tiver maior valor quando comparado para o objeto obj2. Os métodos equals () verificam se o objeto especificado é igual ao objeto invocador. O método equals () retorna true se os dois objetos comparados forem iguais ou se retornar false . A classe Collections fornece o método para classificar os elementos da lista e do tipo de comparação. Os elementos da lista de tipos de comparação são classificados pelo método Collections.sort (List, Comparator).

Principais diferenças entre comparável e comparador

  1. A interface comparável permite a sequência de classificação única, o que significa que você pode comparar apenas um único elemento de dados do objeto no método compareTo () Por outro lado, a interface do Comparador permite várias sequências de classificação que permitem comparar vários elementos de dados do objeto.
  2. A interface Comparable é implementada pela classe cujos objetos devem ser comparados porque a lógica de classificação é definida dentro da mesma classe. Por outro lado, a interface do Comparador não é implementada pela classe cujos objetos devem ser comparados porque a lógica de classificação é definida nas classes separadas, onde cada classe define a classificação no único elemento de dados do objeto e essas classes de definição implementam a interface do Comparador. .
  3. A interface Comparable está dentro do pacote java.lang, enquanto a interface do Comparador está dentro do pacote java.util.
  4. A interface Comparable declara apenas um método que é compareTo (Object obj), enquanto que a interface Comparator declara dois métodos que são, compare (Object obj1, Object obj2) e equals (Object obj).
  5. O método compareTo (Object obj) em Comparable compara o método invocando o objeto com o objeto especificado passado ao método enquanto, o método compare (Object obj1, Object obj2) do Comparator compara os objetos obj1 com obj2 que são passados ​​para o método.
  6. A classe Collections fornece um método de classificação “Collections.sort (List lst)” para classificar os objetos do tipo Comparable. A classe Collections fornece o método de classificação Collections.sort (List, Comparator) para classificar os objetos do tipo Comparator.

Conclusão:

Se você quiser ordenar os objetos na ordenação natural, então você pode usar a interface comparável que você deseja ordenar os objetos com base em qualquer atributo, em seguida, a interface do Comparador é usada.

Top