Comparando objetos por Dois Atributos em Java

Muitas vezes queremos comparar objetos em java mas não usando somente 1 atributo, como nome, cpf, placa … queremos que dois objetos sejam considerados iguais somente se ambos possuírem dois atributos semelhantes (nome e cpf, Placa e Renavam). Ou então, o caso da busca poder ser por vários tipos de parâmetros, buscar pelo nome ou pela idade. Em uma aplicação, é fundamental que o usuário possa escolher o parâmetro que deseja realizar a busca.

Com isso, para exemplificar melhor o problema proposto, seguiremos o mesmo exemplo do 1° artigo esclarecendo a sobrescrita do equals, o cadastro de pessoas com nome e cpf. Sendo assim, vamos direto ao assunto.

1° caso – Sobrescrevendo o equals para comparar objetos através de dois atributos – && (usando o e)

  1. public class Pessoa {
  2. public boolean equals(Object obj) {
  3. if (obj instanceof Pessoa) {
  4. Pessoa qualquer = (Pessoa) obj;
  5. return this.cpf.equals(qualquer.getCpf()) && this.nome.equals(qualquer.getNome());
  6. }else {
  7. return false;
  8. }
  9. }
  10. }

Nesse primeiro caso, o equals retorna true caso os dois atributos nome e cpf sejam iguais. Se o nome for igual mas o cpf não for, retorna false (vice e versa).

2° caso – Sobrescrevendo o equals para comparar objetos através de dois atributos – || (usando o ou)

  1. public class Pessoa {
  2. public boolean equals(Object obj) {
  3. if (obj instanceof Pessoa) {
  4. Pessoa qualquer = (Pessoa) obj;
  5. return this.cpf.equals(qualquer.getCpf()) || this.nome.equals(qualquer.getNome());
  6. }else {
  7. return false;
  8. }
  9. }
  10. }

Esse segundo caso se encaixa muito bem quando você quer dar ao usuário a opção de buscar um objeto por diferentes tipos de parâmetros, seja nome, seja cpf. Só basta que um dos atributos passados seja igual ao atributo de um objeto que o equals irá considerar e retornar true.

Criação de Sites

Deixe uma resposta

O seu endereço de e-mail não será publicado. Campos obrigatórios são marcados com *

Oi 👋Se tiver alguma dúvida estou por aqui. Será um prazer te ajudar! 😊
🇺🇸🇮🇳🇧🇷
Powered by