Estou com o seguinte código:
Estou com o seguinte código:
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());
    }
}