Como comparar os atributos de dois objetos

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 🙂


Postingan terbaru

LIHAT SEMUA