4
respostas

Utilizando tabela em Java

Estou com o seguinte código:

4 respostas

Oi Tibério

Segue exemplo de implementação do equals e hashCode usando todos os atributos da sua classe Cliente:

import java.util.Objects;

public class Cliente {

    private String cpf;
    private double salario;
    private String nome;
    private int idade;

    public Cliente(String cpf, double salario, String nome, int idade) {
        this.cpf = cpf;
        this.salario = salario;
        this.nome = nome;
    }

    public String getCpf() {
        return cpf;
    }

    public void setCpf(String cpf) {
        this.cpf = cpf;
    }

    public double getSalario() {
        return salario;
    }

    public void setSalario(double salario) {
        this.salario = salario;
    }

    public String getNome() {
        return nome;
    }

    public void setNome(String nome) {
        this.nome = nome;
    }

    public int getIdade() {
        return idade;
    }

    public void setIdade(int idade) {
        this.idade = idade;
    }

    @Override
    public boolean equals(Object o) {
        if (this == o) return true;
        if (!(o instanceof Cliente)) return false;
        Cliente cliente = (Cliente) o;
        return Double.compare(cliente.getSalario(), getSalario()) == 0 &&
                getIdade() == cliente.getIdade() &&
                Objects.equals(getCpf(), cliente.getCpf()) &&
                Objects.equals(getNome(), cliente.getNome());
    }

    @Override
    public int hashCode() {
        return Objects.hash(getCpf(), getSalario(), getNome(), getIdade());
    }
}

Exemplo usando só o CPF:

    @Override
    public boolean equals(Object o) {
        if (this == o) return true;
        if (o == null || getClass() != o.getClass()) return false;
        Cliente cliente = (Cliente) o;
        return cpf.equals(cliente.cpf);
    }

    @Override
    public int hashCode() {
        return Objects.hash(cpf);
    }

Oi Otávio, obrigado pela resposta, mas tentei aqui e mesmo colocando dois cliente com o mesmo CPF não acontece nada.. o sistema ainda permite que ambos tenham o mesmo, testei com o seguinte código:

public class TestaCliente {

    public static void main(String[] args) {
        Cliente cliente1 = new Cliente();
        Cliente cliente2 = new Cliente();

        cliente1.setNome("Alura");
        cliente1.setSalario(300);
        cliente1.setCpf("111");

        cliente2.setNome("Java");
        cliente2.setSalario(350);
        cliente2.setCpf("111");

        System.out.println("Nome: " + cliente1.getNome() + "\nSalario: " + cliente1.getSalario());

        System.out.println("Nome: " + cliente2.getNome() + "\nSalario: " + cliente2.getSalario());
    }

}

Quando compilo os dois saem com o mesmo CPF, o que houve de errado? Ja que meu objetivo e impedir que dois objetos (Clientes) tenham o mesmo CPF

Oi Tibério

Para validar se existe algum outro cliente com o mesmo CPF provavelmente você vai ter que utilizar um banco de dados onde ficarão armazenados todos os clientes e fazer uma consulta por CPF para verificar a já existencia de algum cliente com esse CPF.

O equals vai servir para você verificar se dois objetos são iguais, olha a linha do "cliente1.equals(cliente2)" abaixo:

package com.sensedia.apigovernance;


import java.util.Objects;

public class TestaCliente {

    public static void main(String[] args) {
        Cliente cliente1 = new Cliente();
        Cliente cliente2 = new Cliente();

        cliente1.setNome("Alura");
        cliente1.setSalario(300);
        cliente1.setCpf("111");

        cliente2.setNome("Java");
        cliente2.setSalario(350);
        cliente2.setCpf("111");

        System.out.println(cliente1.equals(cliente2));

        System.out.println("Nome: " + cliente1.getNome() + "\nSalario: " + cliente1.getSalario());

        System.out.println("Nome: " + cliente2.getNome() + "\nSalario: " + cliente2.getSalario());
    }

}


class Cliente {

    private String cpf;
    private double salario;
    private String nome;
    private int idade;

    public Cliente(String cpf, double salario, String nome, int idade) {
        this.cpf = cpf;
        this.salario = salario;
        this.nome = nome;
    }

    public Cliente() {

    }

    public String getCpf() {
        return cpf;
    }

    public void setCpf(String cpf) {
        this.cpf = cpf;
    }

    public double getSalario() {
        return salario;
    }

    public void setSalario(double salario) {
        this.salario = salario;
    }

    public String getNome() {
        return nome;
    }

    public void setNome(String nome) {
        this.nome = nome;
    }

    public int getIdade() {
        return idade;
    }

    public void setIdade(int idade) {
        this.idade = idade;
    }

    @Override
    public boolean equals(Object o) {
        if (this == o) return true;
        if (o == null || getClass() != o.getClass()) return false;
        Cliente cliente = (Cliente) o;
        return cpf.equals(cliente.cpf);
    }

    @Override
    public int hashCode() {
        return Objects.hash(getCpf(), getSalario(), getNome(), getIdade());
    }
}