Diferença entre comparável e comparador em Java
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.
- Gráfico de comparação
- Definição
- Principais diferenças
- Conclusão
Gráfico de comparação
Base para Comparação | Comparável | Comparador |
---|---|---|
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ção | A 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 / matriz | Quando 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).
- 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.
- 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. .
- A interface Comparable está dentro do pacote java.lang, enquanto a interface Comparator está dentro do pacote java.util.
- 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).
- 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.
- 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.