Ir para conteúdo

POWERED BY:

Arquivado

Este tópico foi arquivado e está fechado para novas respostas.

milaBastos

Acrescentando objetos das classe filhas no ArrayList da pai.

Recommended Posts

oi pessoal comecei a estudar java...

Ainda estou trabalhando com o console.

 

Na minha classe main criei um arrayList de funcionarios e na Visao um popularFuncionarios que, em sua construcao, chama os métodos para criar um diretor ou um professor.

Sei que antes de acrescentar os dois no ArrayList de funcionarios tenho que verificar, por meio do :

 

//Metodo da Classe Object que foi sobrescrito para comparar um funcionario com outro por meio da matricula:
//@Override Object:
public boolean equals(Object obj) {
Funcionario argumento = (Funcionario)obj;
if(argumento.getMatricula().equalsIgnoreCase(getMatricula())){
return true;
}
return false;
}

mas nao sei como utilizar este metodo dentro do metodo popularFuncionarios:

 

Ele está assim:

 

public static void popularFuncionarios(ArrayList funcionarioLista){

int opcao=0,continuar=0,contadorDiretor=0,contadorProfessor=0;

 

do{

 

opcao = lerInteiro("Para acrescentar um diretor iforme 1.\nPara acrescentar um professor informe 2.","Informe 1 ou 2.","Informe um valor inteiro",1, 2);

 

if(opcao==1){

contadorDiretor++;

Diretor diretor = criarDiretor(contadorDiretor);

//Aqui devo verificar primeiro se este já está acrescentado nos funcionarios:para depois acrecentar:

funcionarioLista.add(diretor);

}else{

if(opcao==2){

contadorProfessor++;

Professor professor = criarProfessor(contadorProfessor);

//Aqui devo verificar primeiro se este já está acrescentado nos funcionarios:para depois acrecentar:mas como?

funcionarioLista.add(professor);

}

}

continuar = lerInteiro("Deseja acrecentar outro funcionario?\n-1.[sim]-2.[não]:","Informe 1 ou 2!","\nInforme um inteiro:",1,2);

 

}while(continuar==1);

 

}

 

//será que é deste modo:diretor.equals(professor);//,mas os objetos nao sao enxergados dentro das chaves, antes de acrescentar.

 

Desde já agradeço.

Compartilhar este post


Link para o post
Compartilhar em outros sites

A interface Set e sua implementação HashSet resolve o seu problema. Invés de ArrayList, use HashSet. Set não permite valores duplicados, diferentemente de List. Entretanto os valores de Set não são ordenados como em List.

 

A despeito disso, acho que você deveria se aplicar em alguns conceitos. Achei seu código meio confuso. Dá pra simplificar muito mais. Deixar mais limpo e legível. Sem contar que sua implementação de equals está vulnerável a ClassCastException e NullPointerException.

Compartilhar este post


Link para o post
Compartilhar em outros sites

×

Informação importante

Ao usar o fórum, você concorda com nossos Termos e condições.