Consultar dados de um ArrayList dentro de outro ArrayList
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 ?
Cadastro_contatos
Cadastro_telefones
Gerenciar_contatos
Contatos (main)
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(); } }
Andrey Silva
Curtidas 0
Melhor post
Ricardo Pestana
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());
}
}
}
}
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());
}
}
}
}
GOSTEI 1
Mais Respostas
Andrey Silva
14/11/2018
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 />
<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 /> }
GOSTEI 0