Diferença entre comparável e comparador em Java

Autor: Laura McKinney
Data De Criação: 1 Abril 2021
Data De Atualização: 11 Poderia 2024
Anonim
Diferença entre comparável e comparador em Java - Tecnologia
Diferença entre comparável e comparador em Java - Tecnologia

Contente

Comparable e Comparator 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 Comparator 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 seqüências de classificação. Existem algumas outras diferenças entre a interface Comparável e Comparadora que estudaremos no Gráfico de Comparação.


  1. Gráfico de comparação
  2. Definição
  3. Principais diferenças
  4. Conclusão

Gráfico de comparação

Base para ComparaçãoComparávelComparador
Basic A interface comparável permite apenas uma sequência de classificação única.A interface do comparador permite várias seqüências de classificação.
Pacotes A interface comparável está presente no pacote java.lang.A interface Comparator está presente no pacote java.util.
Métodos A interface comparável contém apenas um método
public int compareTo (Object obj);
A interface Comparator contém dois métodos
public int compare (Obj obj1, Object obj2)
iguais booleanos (Object obj)
ImplementaçãoA interface comparável é implementada pela classe cujos objetos devem ser comparados.A interface do comparador é implementada por uma classe esperada em vez da classe cujos objetos devem ser comparados.
Comparação O método compareTo (Object obj) compara o objeto usado para invocar o método com o objeto especificado passado 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.
Lista / matrizQuando uma lista do objeto do tipo Comparável deve ser comparada, a classe Collection fornece um método, ou seja, Collections.sort (List lst).Quando uma lista de objetos do tipo Comparable precisa ser comparada, a classe Collection fornece um método, ou seja,
Collections.sort (Lista, Comparador).


Definição de Comparável

Comparable é uma interface que está disponível no pacote java.lang. Uma classe implementa a interface Comparator, 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 comparável são as classes Byte, Caractere, Duplo, Flutuante, Longo, Curto, String e Inteiro. Até a classe Date e Calander também implementa a interface Comparable.

A interface comparável 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 (Object obj);

O método CompareTo (Object obj) retorna 0, quando o objeto comparado pelo método contiver o mesmo valor, ele retornará -ve valor se o objeto de chamada for menor que o objeto especificado e retornar + ve valor se o objeto de chamada tiver um valor maior 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 matriz) do tipo Comparável podem ser classificados usando o método “Collections.sort (List lst)”.


Definição de Comparador

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

public int compare (Object obj1, Object obj2) e iguais a booleanos (Object 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 -ve valor se o objeto obj1 for menor que o objeto obj2 e retornar + ve value se o objeto obj1 tiver maior valor em comparação com o objeto obj2. Os métodos equals () verificam se o objeto especificado é igual ao objeto de chamada. O método equals () retorna verdade se os dois objetos comparados forem iguais, ele retornará falso. A classe Coleções fornece o método para classificar os elementos do tipo lista e comparador. Os elementos da lista dos tipos de comparadores são classificados pelo método Collections.sort (List, Comparator).

  1. A interface comparável permite uma 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 Comparator permite várias seqüências de classificação, o que significa que você pode comparar vários elementos de dados do objeto.
  2. A interface Comparável é 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 Comparator 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 em um único elemento de dados do objeto e essas classes definem a interface Comparator. .
  3. A interface Comparable está dentro do pacote java.lang, enquanto a interface Comparator está dentro do pacote java.util.
  4. A interface Comparable declara apenas um método compareTo (Object obj), enquanto a interface Comparator declara dois métodos que são, compare (Object obj1, Object obj2) e iguais (Object obj).
  5. O método compareTo (Object obj) em Comparable compara o método que chama o objeto com o objeto especificado passado para o 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ê deseja classificar os objetos na ordem natural, pode usar a interface comparável, caso contrário, você deseja classificar os objetos com base em qualquer atributo, e a interface Comparator é usada.