Duvida Apostila Caelum sobre array

1 resposta
T

olá todos, tenho um metodo boolean contem(Funcionario f) na classe Empresa e tenho um arrayList de empregados do tipo Funcionario, e estou apanhando muito para percorrer o array e exibir a situação de cada funcionario cadastrado

public class Empresa {
    private String nome;
    private int cnpj;
    private ArrayList<Funcionario> empregado = new ArrayList<Funcionario>();
    private int cont = 0;

    public ArrayList<Funcionario> getEmpregado() {
        return empregado;
    }
    public void adiciona(Funcionario f){
        empregado.add(f);
        this.cont++;
    }
    public void MostraEmpregados()
    {
        for(int i = 0; i < empregado.size(); i++){
            if(empregado.get(i) != null){
                empregado.get(i).Mostra();  
            }
            else{
                break;
            }
            
          }
        System.out.println("Quantidade: " + cont);
    }

    public boolean contem(Funcionario f){
        for(int i = 0; i < empregado.size(); i++){
            if(empregado.get(i) == f){
                   System.out.println("Funcionario Registrado");
               }
            else{
                System.out.println("Funcionario Não Registrado");
                //return false;
        }
           }
           return true;
           
       }
    }

e tenho tbm na classe Funcionario uma variavel Situacao boolean q me retorna se true ou false e um metodo Mostra() q exibe as mensagens
soh q quando compilo nao consigo ligar cada situação a seu respectivo Funcionario, aparece assim

Nome: Bruno
Departamento: Compras
Salario: 1500.0
Ano: 2011
DEMITIDO

Nome: Tiago
Departamento: Vendas
Salario: 1700.0
Situação: ADMITIDO

Quantidade: 2
Funcionario registrado
Nao Funcionario

obrigado =p

1 Resposta

JhowTroMundo

Aquele break no loop do mostra empregado é pra que mesmo?

Pelo que eu entendi, você tem que chamar o método contem(Funcionario f) de dentro do if do metodo MostraEmpregado() - presta atenção na convenção de nomeação de métodos - passando empregado.get(i) como parâmetro. Coloca um return true caso o funcionário seja registrado e troca o return true no fim do método por um return false (caso todo o array seja percorrido sem que o funcionario seja encontrado)

Mas dessa forma seu código fica com um esforço de N² por ter um laço for encadeado, o que o torna mais lento.
ArrayList possui um método bem bacana chamado “contains”. Pesquise sobre ele e veja se nao seria mais fácil usá-lo.

Criado 26 de maio de 2011
Ultima resposta 26 de mai. de 2011
Respostas 1
Participantes 2