Fórum Consultar dados de um ArrayList dentro de outro ArrayList #598603
14/11/2018
0
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
Curtir tópico
+ 0
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());
}
}
}
}
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());
}
}
}
}
Ricardo Pestana
Responder
Gostei + 1
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 />
<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
Gostei + 0
Clique aqui para fazer login e interagir na Comunidade :)