Este post discutirá como comparar dois objetos em Java.
Você nunca deve usar o == operador para comparar dois objetos, uma vez que o == O operador realiza uma comparação de referência e simplesmente verifica se os dois objetos se referem à mesma instância ou não. A opção recomendada para comparar dois objetos é usar o equals() método. No entanto, basta chamar o equals() método não funcionará como esperado, conforme mostrado abaixo:
public TV(String company, String model, int warranty) { this.warranty = warranty; public static void main(String[] args) { TV tv1 = new TV("Vu", "Vu Premium 4K TV", 2); TV tv2 = new TV("Vu", "Vu Premium 4K TV", 2); System.out.println(tv1.equals(tv2)); // false |
Download Executar código
O programa acima chamará o equals() método do Object classe, que se comporta de forma semelhante ao == operador, pois não é substituído por uma classe. Portanto, cada classe deve substituir o equals (e hashCode) método do Object class e especifique a relação de equivalência em objetos, de modo que avalie a comparação de valores no objeto independentemente de dois objetos se referirem à mesma instância ou não. Ver esta postagem para mais detalhes.
Aqui está um programa simples que demonstra o funcionamento do equals() método.
import java.util.Objects; public TV(String company, String model, int warranty) { this.warranty = warranty; public boolean equals(Object o) { if (this == o) return true; if (o == null || getClass() != o.getClass()) return false; return warranty == tv.warranty && Objects.equals(company, tv.company) && Objects.equals(model, tv.model); return Objects.hash(company, model, warranty); public static void main(String[] args) { TV tv1 = new TV("Vu", "Vu Premium 4K TV", 2); TV tv2 = new TV("Vu", "Vu Premium 4K TV", 2); System.out.println(tv1.equals(tv2)); // true |
Download Executar código
Você também deve substituir o hashCode() método, uma vez que objetos iguais devem ter códigos hash iguais. Se você preferir não substituir o equals() e hashCode() método, você pode criar uma função personalizada para verificar a igualdade. Isso é demonstrado abaixo:
import java.util.Objects; public TV(String company, String model, int warranty) { this.warranty = warranty; public static boolean isEqual(TV tv1, TV tv2) { if (tv2 == null || tv1.getClass() != tv2.getClass()) { return tv1.warranty == tv2.warranty && Objects.equals(tv1.company, tv2.company) && Objects.equals(tv1.model, tv2.model); public static void main(String[] args) { TV tv1 = new TV("Vu", "Vu Premium 4K TV", 2); TV tv2 = new TV("Vu", "Vu Premium 4K TV", 2); System.out.println(isEqual(tv1, tv2)); // true |
Download Executar código
Isso é tudo sobre comparar dois objetos em Java.
Obrigado por ler.
Por favor, use nosso compilador online para postar código em comentários usando C, C++, Java, Python, JavaScript, C#, PHP e muitas outras linguagens de programação populares.
Como nós? Indique-nos aos seus amigos e ajude-nos a crescer. Codificação feliz 🙂