Série da semana: Primeiros passos no Angular

Veja mais

Consultar dados de um ArrayList dentro de outro ArrayList

14/11/2018

8

Olá pessoal, poderiam me ajudar ? Estou desenvolvendo uma atividade da faculdade, e no momento estou tendo grande dificuldade em fazer um processo de consulta dos dados de um ArrayList, que fica dentro de outro ArrayList, abaixo vou explicar a situação:

Tenho as seguintes classes:

- Contatos (main)
- Cadastro_contatos
- Cadastro_telefones
- Gerenciar_contatos

Dentro da classe Cadastro_contatos possuiu um atributo em ArrayList da classe Cadastro_telefones, a ideia seria inserir diferentes telefones para um mesmo contato. O problema é que eu não estou conseguindo separar os telefones de cada contato, dai quando faço a impressão do dados, ele me exibe em cada contato todos os telefones do Array.

Acredito que não estou gravando corretamente o ArrayList dos telefones dentro do ArrayList dos contatos, ou não estou fazendo corretamente a busca das informações. Poderiam me ajudar ?

Link para Donwload do projeto: https://drive.google.com/open?id=1P5I_mzPOB6a-SgcCJEzD7bJOLgsxRPv0


Cadastro_contatos
package contatos;

import java.util.ArrayList;

public class Cadastro_contatos {
    
    private String nome;
    private String endereco; 
    private ArrayList <Cadastro_telefones> Array_telefones = new ArrayList <Cadastro_telefones>();

    public Cadastro_contatos() {
    }
    
    public Cadastro_contatos(Cadastro_contatos objeto_Cadastro_contatos) {
        this.nome = objeto_Cadastro_contatos.getNome();
        this.endereco = objeto_Cadastro_contatos.getEndereco();
        this.Array_telefones = objeto_Cadastro_contatos.Array_telefones;
    }
    
    public String getNome() {
        return nome;
    }

    public void setNome(String nome) {
        this.nome = nome;
    }

    public String getEndereco() {
        return endereco;
    }

    public void setEndereco(String endereco) {
        this.endereco = endereco;
    }
    
    public void addTelefones(Cadastro_telefones Array_telefones){
        this.Array_telefones.add(Array_telefones);
    } 

    public String consultaTelefones(Cadastro_contatos contatos){
        String telefones = "";
        
        for(int i = 0; i < contatos.Array_telefones.size(); i++){
            telefones += "" + contatos.Array_telefones.get(i).imprimirTelefones();
        }

        return telefones;
    }    
}


Cadastro_telefones
package contatos;

public class Cadastro_telefones {
    
    private int codigo_de_area , numero_telefone, cod_tipo_telefone;
    private String tipo_telefone;

    public Cadastro_telefones() {
    }
    
    public Cadastro_telefones(Cadastro_telefones objeto_Cadastro_telefones) {
        this.codigo_de_area = objeto_Cadastro_telefones.getCodigo_de_area();
        this.numero_telefone = objeto_Cadastro_telefones.getNumero_telefone();
        this.cod_tipo_telefone = objeto_Cadastro_telefones.getCod_tipo_telefone();
        
        if(this.cod_tipo_telefone == 1){
            this.tipo_telefone = "Residencial";
        }
        else if(this.cod_tipo_telefone == 2){
            this.tipo_telefone = "Celular";
        }
        else if(this.cod_tipo_telefone == 3){
            this.tipo_telefone = "Comercial";
        }
        else{
            this.tipo_telefone = "Nenhum";  
        }         
    }
    
    public int getCodigo_de_area() {
        return codigo_de_area;
    }

    public void setCodigo_de_area(int codigo_de_area) {
        this.codigo_de_area = codigo_de_area;
    }

    public int getNumero_telefone() {
        return numero_telefone;
    }

    public void setNumero_telefone(int numero_telefone) {
        this.numero_telefone = numero_telefone;
    }

    public int getCod_tipo_telefone() {
        return cod_tipo_telefone;
    }

    public void setCod_tipo_telefone(int cod_tipo_telefone) {
        this.cod_tipo_telefone = cod_tipo_telefone;
    }

    public String getTipo_telefone() {
        return tipo_telefone;
    }
    
    public String imprimirTelefones(){
        String telefones = "";
        telefones +=  "Telefone: (" + codigo_de_area + ") " + numero_telefone + "\\nTipo: " + tipo_telefone + "\\n";
        return telefones;
    }

}


Gerenciar_contatos
package contatos;

import java.util.ArrayList;

public class Gerenciar_contatos {
    
    ArrayList <Cadastro_contatos> Array_cadastro_contatos = new ArrayList <Cadastro_contatos> ();
    
    public void addContatosArray (Cadastro_contatos addContatos){
        Array_cadastro_contatos.add(addContatos);
    }
    
    public void dadosContatos(){
        for(Cadastro_contatos contatos : Array_cadastro_contatos ){
            System.out.println("\\nNome: " + contatos.getNome()
                              +"\\nEndereço: " + contatos.getEndereco()
                              +"\\n" + contatos.consultaTelefones(contatos));
        }
    }
}


Contatos (main)
package contatos;

import java.util.ArrayList;

public class Contatos {

    public static void main(String[] args) {
        
        Cadastro_contatos addContatos = new Cadastro_contatos();
        Cadastro_telefones addTelefones = new Cadastro_telefones();
        Gerenciar_contatos Array = new Gerenciar_contatos();
        
        addContatos.setNome("Andrey henrique");
        addContatos.setEndereco("Rua Vênus, Nº330");
        
        addTelefones.setCodigo_de_area(11);
        addTelefones.setNumero_telefone(40511444);
        addTelefones.setCod_tipo_telefone(1);
        addContatos.addTelefones((new Cadastro_telefones(addTelefones)));
                
        addTelefones.setCodigo_de_area(11);
        addTelefones.setNumero_telefone(991147895);
        addTelefones.setCod_tipo_telefone(2);
        addContatos.addTelefones((new Cadastro_telefones(addTelefones)));        
        Array.addContatosArray((new Cadastro_contatos(addContatos)));
                        
        addContatos.setNome("Rosana de Souza");
        addContatos.setEndereco("Rua Vênus, Nº330 - Diadema SP");
        
        addTelefones.setCodigo_de_area(11);
        addTelefones.setNumero_telefone(991345521);
        addTelefones.setCod_tipo_telefone(2);
        addContatos.addTelefones((new Cadastro_telefones(addTelefones)));                        
        Array.addContatosArray((new Cadastro_contatos(addContatos)));
        
        Array.dadosContatos();        
    }
    
}
Responder

Post mais votado

14/11/2018

Andrey bom dia,

Veja se assim te ajuda, alterei um pouco seu projeto.... mas acho que vai esclarecer, mas se tiver alguma duvida posta aí... abraço

- Sua classe Cadastro_contatos eu passei a chamar Pessoa:

public class Pessoa {

private String nome;
private String endereco;
private List <Telefone> telefones = new ArrayList <Telefone>();

// getters e setter omitidos por questão de espaço
}

- Sua classe Cadastro_telefones passei a chamar Telefone (não entendi pq vc tem um cod_tipo_telefone e um tipo telefone mas mantive sua lógica):

public class Telefone {

private int codigo_de_area , numero_telefone, cod_tipo_telefone;
private String tipo_telefone;

public Telefone() {
}

// esse construtor visa facilitar a adição de telefones no array list.....
public Telefone(int codigo_de_area, int numero_telefone, int cod_tipo_telefone, String tipo_telefone) {
super();
this.codigo_de_area = codigo_de_area;
this.numero_telefone = numero_telefone;
this.cod_tipo_telefone = cod_tipo_telefone;
this.tipo_telefone = tipo_telefone;
}

// getters e setter omitidos por questão de espaço

}

- por ultimo eu criei uma classe chamada Gerenciar que tem o papel das classes Contatos e Gerenciar_Contatos que vc criou:
public class Gerenciar {

public Gerenciar() {
// TODO Auto-generated constructor stub
}

public static void main(String[] args) {

List<Pessoa> pessoas = new ArrayList<>();

Pessoa pessoa = new Pessoa();
pessoa.setTelefones(new ArrayList<>());
pessoa.setNome("Andrey henrique");
pessoa.setEndereco("Rua Vênus, Nº330");
// primeiro telefone do andrey
pessoa.getTelefones().add(new Telefone(11, 40511444, 1, "1"));
// segundo telefone do andrey
pessoa.getTelefones().add(new Telefone(11, 991147895, 2, "2"));
pessoas.add(pessoa);


pessoa = new Pessoa();
pessoa.setTelefones(new ArrayList<>());
pessoa.setNome("Rosana de Souza");
pessoa.setEndereco("Rua Vênus, Nº330 - Diadema SP");
// primeiro telefone da Rosana
pessoa.getTelefones().add(new Telefone(11, 991345521, 2, "2"));
pessoas.add(pessoa);



for(Pessoa p : pessoas ){

System.out.println("\\\\nNome: " + p.getNome()
+"\\\\nEndereço: " + p.getEndereco()
+"\\\\n" + p.getTelefones().size());
;
for (Telefone telefone : p.getTelefones()) {
System.out.println("\\\\ # " + telefone.getCod_tipo_telefone()
+"\\\\n" + telefone.getNumero_telefone());
}

}


}

}
Responder

Mais Posts

17/11/2018

Andrey Silva

Boa noite Ricardo,<br />
<br />
Desculpe a demora em responder obrigado pela ajuda, implementei o ArrayList da forma que exemplificou:<br />
<br />
pessoa.setTelefones(new ArrayList<>());<br />
pessoa.getTelefones().add(new Telefone(11, 991345521, 2, "2")); <br />
<br />
E deu super certo, obrigado!!<br />
<br />
Obs: Com relação ao codigo do tipo, a ideia seria para manter o padrão de cada tipo que o usuario só digite o codigo, e o sistema guarde o tipo, através do <br />
<br />
        if(this.cod_tipo_telefone == 1){<br />
            this.tipo_telefone = "Residencial";<br />
        }<br />
        else if(this.cod_tipo_telefone == 2){<br />
            this.tipo_telefone = "Celular";<br />
        }<br />
        else if(this.cod_tipo_telefone == 3){<br />
            this.tipo_telefone = "Comercial";<br />
        }<br />
        else{<br />
            this.tipo_telefone = "Nenhum";  <br />
        }    
Responder