O que é comparável em Java?
Comparável em Java é um objeto para se comparar a outro objeto. Isso ajuda a classificar a lista de objetos personalizados. A interface java.lang.Comparable deve ser implementada por uma classe para comparar suas instâncias. A matriz de objetos que implementam uma interface comparável é classificada automaticamente pelos métodos Arrays.sort e Collections.sort.
Neste tutorial Comparador vs Comparável em Java, você aprenderá:
- O que é comparável em Java?
- O que é Comparator em Java?
- Método usado em Comparable:
- Método usado no Comparador:
- Diferença entre Comparable vs Comparator em Java
- Melhores práticas ao usar comparador e comparável em Java
O que é Comparator em Java?
Comparator em Java é um objeto para comparar diferentes objetos de diferentes classes. A interface de comparação em Java também é usada para organizar os objetos de classes definidas pelo usuário. Inclui dois métodos de interface de comparação importantes, conhecidos como compare (Object obj1, Object obj2) e equals (Object element).
PRINCIPAIS DIFERENÇAS:
- Comparable fornece o método compareTo () para classificar elementos em Java, enquanto o Comparator fornece o método compare () para classificar elementos em Java.
- A interface comparável está presente no pacote java.lang, enquanto a interface Comparator está presente no pacote java.util.
- Comparable fornece uma sequência de classificação única, enquanto o Comparator fornece várias sequências de classificação.
- Comparável afeta a classe original, enquanto o comparador não afeta a classe original.
Método usado em Comparable:
A seguir está um método importante usado na interface Comparable:
Comparado a():
O método CompareTo () é usado para realizar a classificação natural na string. O significado da classificação natural é a ordem de classificação que se aplica ao objeto, por exemplo, ordem numérica para classificar inteiros, ordem alfabética para String, etc.
A sintaxe do método CompareTo () é a seguinte:
int compareTo(T obj)
Na sintaxe acima, T significa o tipo de objeto que você vai comparar.
O método CompareTo () compara o objeto com T obj.
Resultado:
- Retorna 0 se os valores forem iguais.
- No caso, se o objeto tiver um valor menor, então este método retorna um valor negativo.
- Se o objeto tiver um valor superior, ele retornará um valor positivo.
Exemplo do método CompareTo ():
O seguinte programa de exemplo comparável em Java mostra a comparação de dois caracteres, "a" e "b". O caractere "a" vem antes de "b" em ordem alfabética.
Portanto, a saída é -1. O caractere "b" vem depois de "a" em ordem alfabética. Portanto, a saída é 1. Os caracteres "a" e "b" são ambos equivalentes. Portanto, a saída é 0.
public class Sample_String {public static void main(String[] args) {String str_Sample = "a";System.out.println("Compare To 'a' b is : " + str_Sample.compareTo("b"));str_Sample = "b";System.out.println("Compare To 'b' a is : " + str_Sample.compareTo("a"));str_Sample = "b";System.out.println("Compare To 'b' b is : " + str_Sample.compareTo("b"));}}
Resultado
Compare To 'a' b is : -1Compare To 'b' a is : 1Compare To 'b' b is : 0
Método usado no Comparador:
A seguir estão os métodos importantes usados na interface do comparador:
Comparar():
Compare () permite que você solicite objetos. Para fazer isso, você deve criar uma classe que implemente a interface do comparador. Depois disso, você precisa substituir seu método de comparação.
A sintaxe do método compare () é a seguinte:
compare(Object obj1, Object obj2)
Na sintaxe acima, obj1 e obj2 são dois objetos que você deve comparar usando o método compare ().
Resultado:
- Ele retorna um número inteiro negativo se o primeiro argumento for menor que o segundo.
- Retorna zero se o primeiro argumento e o segundo argumento forem iguais.
- Este método pode retornar um número inteiro positivo, caso o primeiro argumento seja maior que o segundo.
Você deve garantir que a relação seja transitiva. Por exemplo, ((compare (a, b)> 0) && (compare (b, c)> 0)) que implica compare (a, c)> 0.
Exemplo de método de comparação:
No programa abaixo do exemplo de comparador Java, existem 6 variáveis. "x", "y", "p", "q", "r" e "s". A saída é -1 porque o valor de "x", 20 é menor que o valor de "y", 30. A saída é 0 porque o valor de "p", 40 é igual ao valor de "q", 40 .
import java.lang.Integer;public class example {public static void main(String args[]){int x = 20;int y = 30;// as 10 less than 20,// Output will be a value less than zeroSystem.out.println(Integer.compare(x, y));int p = 40;int q = 40;// as 30 equals 30,// Output will be zeroSystem.out.println(Integer.compare(p, q));int r = 20;int s = 7;// as 15 is greater than 8,// Output will be a value greater than zeroSystem.out.println(Integer.compare(r, s));}}
Resultado:
-101
É igual a():
Equals () verifica se o objeto de número é igual ao objeto, que é passado como um argumento ou não.
A sintaxe do método equals () é a seguinte:
public boolean equals (objeto o)
Este método leva dois parâmetros 1) qualquer objeto 2) valor de retorno. Ele retorna verdadeiro se o argumento passado não for nulo e for um objeto do tipo semelhante com o mesmo valor numérico.
Exemplo de método igual:
No exemplo abaixo, estamos comparando as quatro variáveis entre si. Três variáveis são do tipo inteiro e uma do tipo curta. O primeiro resultado é falso, pois o valor de p, que é 5, não é igual ao valor de q, que é 20.
O segundo resultado é verdadeiro porque o valor da variável p e r é o mesmo, que é 5. Por último, a saída é falsa, pois a variável p e s têm valores atribuídos diferentes.
public class Test {public static void main(String args[]) {Integer p = 5;Integer q = 20;Integer r =5;Short s = 5;System.out.println(p.equals(q));System.out.println(p.equals(r));System.out.println(p.equals(s));}}
Resultado
falsetruefalse
Diferença entre Comparable vs Comparator em Java
Aqui estão as principais diferenças entre Java Comparable vs Comparator:
Comparável | Comparador |
Comparable fornece o método compareTo () para classificar elementos em Java. | Comparator fornece o método compare () para classificar elementos em Java. |
Interface comparável está presente no pacote java.lang. | A interface do comparador está presente no pacote java.util. |
A lógica de classificação deve estar na mesma classe cujo objeto você irá classificar. | A lógica da classificação deve estar em uma classe separada para escrever diferentes classificações com base em diferentes atributos de objetos. |
A classe cujos objetos você deseja classificar deve implementar uma interface comparável. | A classe cujos objetos você deseja classificar não precisa implementar uma interface de comparação. |
Ele fornece sequências de classificação simples. | Ele fornece várias sequências de classificação. |
Este método pode classificar os dados de acordo com a ordem de classificação natural. | Este método classifica os dados de acordo com a ordem de classificação personalizada. |
Isso afeta a classe original. ou seja, a classe real é alterada. | Não afeta a classe original, ou seja, a classe real não é alterada. |
Implementado frequentemente na API por: Calendar, Wrapper classes, Date e String. | Ele é implementado para classificar instâncias de classes de terceiros. |
Todas as classes de wrapper e classe String implementam interface comparável. | As únicas classes implementadas de Comparator são Collator e RuleBasedColator. |
Melhores práticas ao usar comparador e comparável em Java
- Use uma interface comparável quando a comparação for padrão para a classe específica.
- Você pode usar lambdas com um comparador.
- Muitas classes principais disponíveis em implementa uma interface comparável.
- É possível usar TreeSet e TreeMap ou ao classificar Conjunto ou Mapa.
- O método compareTo () funciona com comparador e também com comparáveis.
- Use a interface do comparador apenas quando você
- O método compareTo () retornará um número inteiro positivo se o primeiro objeto for maior que o outro, negativo se for menor e zero se ambos forem iguais.