Ea galera estou com uma dúvida e gostaria muito de entender, estou implementando um @override no método equals, para que não permita o registro de nomes idênticos, no sistema, e estou adicionando os objetos da minha classe em um ArrayList. Então quando tento fazer a comparação desses objetos dentro da lista, ele não traz a resposta esperada com o equals, mas quando passo no método contains, ele consegue compara com exito, queria saber se a sobrescrita no método equals tamém pode influenciar no contains, porque pelo que parece está acontecendo isso. Desde já agradeço.
public class Main {
public static void main(String[] args) {
Funcionarios func;
ArrayList<Funcionarios> listFunc = new ArrayList();
char opcao = 0, categoria = 0;
int contador = 0;
do {
categoria = Leitor.lerCaracter("Para cadastrar professores digite: -P, para diretores -D");
contador += +1;
func = Visao.createFunc(contador, categoria);
//System.out.println("********Iniciando Estrutura de condição**************");
if (listFunc.contains(func)) {
//System.out.println("********IF(1)**************");
System.out.println("Usuário já registrado!");
} else {
//System.out.println("********else**************");
listFunc.add(func);
}
opcao = Leitor.lerCaracter("Deseja continuar: se sim -s, se não -n");
} while (opcao == 's');
Visao.print(listFunc);
}
}
public class Funcionarios {
private int matricula;
private String nome;
private String cpf;
private double salario;
public Funcionarios(String nome, String cpf, double salario) {
this.nome = nome;
this.cpf = cpf;
this.salario = salario;
}
public Funcionarios() {
}
@Override
public boolean equals(Object obj) {
Funcionarios temp = (Funcionarios) obj;
if(getNome().equalsIgnoreCase(temp.getNome())) {
return true;
} else {
return false;
}
}
@Override
public String toString() {
return "matricula= " + matricula + "\tnome= " + nome + "\tcpf= " + cpf + "\tsalario= " + salario;
}
public double getImpostoRenda() {
return 0;
}
public int getMatricula() {
return matricula;
}
public void setMatricula(int matricula) {
this.matricula = matricula;
}
public String getNome() {
return nome;
}
public void setNome(String nome) {
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;
}
}