ArrayList Dúvida

7 respostas
tomwel

Bom pessoal to com uma dúvida aqui.

Tenho uma super classe Funcionarios e duas subclasses Administrativo e Professor. Não superclasse estão atributos comuns as subclasses e nas subclasses atributos específicos.

tenho também interface IDados nela contidos assinaturas dos métodos (add contato, remover contato, listar ...) e uma classe Dados implements IDados....

dai tenho que implementar um método public ArrayList listar() que lista o arraylist do tipo Funcionario.
O Main ta funcionando bem e ta adicionando os dados, mas esse método só imprime informações assim: "representacao.Funcionario@ae1cf" - onde representacao é o pacote e Funcionario a Classe do objeto f. Explicações pois não sei implementar esse tipo de método.

package Dados;

import java.util.ArrayList;
import representacao.Funcionario;

public class Dados implements IDados {
    
    private ArrayList<Funcionario> listaFuncionarios = new ArrayList();
    private ArrayList<Funcionario> Administrativo = new ArrayList();
    private ArrayList<Funcionario> Professor = new ArrayList();

    public ArrayList<Funcionario> getListaFuncionarios() {
        return listaFuncionarios;
    }

    public void setListaFuncionarios(ArrayList<Funcionario> listaFuncionarios) {
        this.listaFuncionarios = listaFuncionarios;
    }

    public ArrayList<Funcionario> getAdministrativo() {
        return Administrativo;
    }

    public void setAdministrativo(ArrayList<Funcionario> Administrativo) {
        this.Administrativo = Administrativo;
    }

    public ArrayList<Funcionario> getProfessor() {
        return Professor;
    }

    public void setProfessor(ArrayList<Funcionario> Professor) {
        this.Professor = Professor;
    }
    
    //Adicionar funcionário
    @Override
    public void adicionar(Funcionario f) throws Exception {
        listaFuncionarios.add(f);
    }
    
    public void adicionar(Funcionario f, String tipo) throws Exception {
        if(tipo.equals("A")||tipo.equals("a")){
            Administrativo.add(f);
        }else{
            Professor.add(f);
        }
    }

    //Excluir funcionário ainda falter ser implementado
    @Override
    public void excluir(Funcionario f) {        
    }

    //Listar Funcionários ---------------------------------- ****************** o método que falei logo acima
    @Override
    public ArrayList<Funcionario> listar() {
        for (Funcionario f : listaFuncionarios){    
            System.out.println(f.toString());
        }
        return getListaFuncionarios();
    }
}

7 Respostas

S

Mas o que você quer que ele imprima?

ErickRAR

Se você quer que imprmia o nome do funcionario, por exemplo, deverá fazer:

System.out.println(f.getNome());

Agora se quiser algo diferente, poderá sobrescrever o métodos toString() da classe funcionário.

public String toString(){
return "Nome - " + nome + "\n Matricula - + "+matricula);
}

//para imprimir:
System.out.println(f);  //ou f.toString();
edudux

Vc precisa sobrescrever o toString e dizer o que ele precisa imprimir.

S

ErickRAR:
Se você quer que imprmia o nome do funcionario, por exemplo, deverá fazer:

System.out.println(f.getNome());

Agora se quiser algo diferente, poderá sobrescrever o métodos toString() da classe funcionário.

public String toString(){
return "Nome - " + nome + "\n Matricula - + "+matricula);
}

//para imprimir:
System.out.println(f);  //ou f.toString();

Já que você faz a concatenação de String, o correto não seria usar StringBuilder?

LucianoTulio

Ele está imprimindo o objeto, o que pretende imprimir?
se for todos os dados você pode reescrever o metodo
toString nas subclasses, exemplo:

public String toString(){
     return String.format("variaveis que a classe possui", variavel.getMetodo());
}

quando for listada o objeto no seu

public ArrayList<Funcionario> listar() {  
        for (Funcionario f : listaFuncionarios){      
            System.out.println(f.toString());  
        }  
        return getListaFuncionarios();  
    }

o próprio obj vai chamar o método toString correspondente!

Espero ter ajudado

ErickRAR

Sem_Nome:
ErickRAR:
Se você quer que imprmia o nome do funcionario, por exemplo, deverá fazer:

System.out.println(f.getNome());

Agora se quiser algo diferente, poderá sobrescrever o métodos toString() da classe funcionário.

public String toString(){
return "Nome - " + nome + "\n Matricula - + "+matricula);
}

//para imprimir:
System.out.println(f);  //ou f.toString();

Já que você faz a concatenação de String, o correto não seria usar StringBuilder?

Acho desnecessário nesse caso. É apenas uma simples concatenação. Se fosse algo grande, aí sim.

tomwel

Vlw pessoal

Criado 2 de outubro de 2012
Ultima resposta 2 de out. de 2012
Respostas 7
Participantes 5