Preencher List de Objetos - (RESOLVIDO)

25 respostas
johnny_ibadi1

Boa tarde pessoal,

Pessoal estou com o seguinte método que recebe uma ResultSet por parâmetro e apartir dela ele vai Criando vários objetos “Titulares”…blz…

Agora eu preciso que a cada Objeto criado ele adicione o mesmo numa List…

public void titulares(ResultSet rs) throws SQLException{
		Titular titular = null;
		while(rs.next()){
			if(rs.getString("TIPO").equals("TITULAR")){
				
				System.out.println("\n------------------------------------------------------------------------------------------");
				System.out.println("...:: Estamos na linha: " + rs.getRow() + " Do ResultSet ::...");
				System.out.println("\n...:: Titular encontrado ::... : " + rs.getString("NOME"));
				
				titular = new Titular();

				titular.setNome(rs.getString("NOME"));

			}else{
				titular.addDendentes(rs.getString("NOME"));
				System.out.println("\n...:: Dependente encontrado: " + rs.getString("NOME") + "::...");
			}
			
		}

a ResultSet que ele recebe esta assim:

Identificação NOME TIPO
1 ADENI P BERTO TITULAR
2 JOSENILDA DOS S S BERTO ESPOSA
3 AMANDA SIMOES BERTO FILHA
4 ALDO AFONSO DA SILVA TITULAR
5 INES ROSA R DA SILVA ESPOSA

701 JOAO FERREIRA FILHO

neste caso como eu poderei fazer isto?

abraço!!!

25 Respostas

diego.sas

[email removido:
]Boa tarde pessoal,

Pessoal estou com o seguinte método que recebe uma ResultSet por parâmetro e apartir dela ele vai Criando vários objetos “Titulares”…blz…

Agora eu preciso que a cada Objeto criado ele adicione o mesmo numa List…

public void titulares(ResultSet rs) throws SQLException{
Titular titular = null;
while(rs.next()){
if(rs.getString("TIPO").equals("TITULAR")){
				
System.out.println("\n------------------------------------------------------------------------------------------");
System.out.println("...:: Estamos na linha: " + rs.getRow() + " Do ResultSet ::...");
System.out.println("\n...:: Titular encontrado ::... : " + rs.getString("NOME"));
				
titular = new Titular();

titular.setNome(rs.getString("NOME"));

}else{
titular.addDendentes(rs.getString("NOME"));
System.out.println("\n...:: Dependente encontrado: " + rs.getString("NOME") + "::...");
}
			
}

a ResultSet que ele recebe esta assim:

Identificação NOME TIPO
1 ADENI P BERTO TITULAR
2 JOSENILDA DOS S S BERTO ESPOSA
3 AMANDA SIMOES BERTO FILHA
4 ALDO AFONSO DA SILVA TITULAR
5 INES ROSA R DA SILVA ESPOSA

701 JOAO FERREIRA FILHO

neste caso como eu poderei fazer isto?

abraço!!!

public void titulares(ResultSet rs) throws SQLException{
		Titular titular = null;
                                List<Titular> lista = new ArrayList<Titular>();   
		while(rs.next()){
                                              if(rs.getString("TIPO").equals("TITULAR")){
				
				System.out.println("\n------------------------------------------------------------------------------------------");
				System.out.println("...:: Estamos na linha: " + rs.getRow() + " Do ResultSet ::...");
				System.out.println("\n...:: Titular encontrado ::... : " + rs.getString("NOME"));
				
				titular = new Titular();

				titular.setNome(rs.getString("NOME"));

			}else{
				titular.addDendentes(rs.getString("NOME"));
				System.out.println("\n...:: Dependente encontrado: " + rs.getString("NOME") + "::...");
			}
                                            lista.add(titular);
			
		}
johnny_ibadi1

Fala Diego tudo bem??

Tipo o problema é que um objeto TITULAR pode ter até 5 dependentes… e da forma que vc sugeriu ele só preencheria 1 dependente e ja adicionaria o objeto(inclompleto) na List… entendeu?

Muito Obrigado…

johnny_ibadi1

Vamos la Galera me ajudem!!!

diego.sas

Você está utilizando JDBC certo?

johnny_ibadi1

Certo…

diego.sas

Como esta estruturado seu banco?
Voce tem uma tabela so para dependentes?

johnny_ibadi1

não…

eu tenho uma tabela “LISTA 1” que tem duas colunas (1° Nome - 2° Tipo)…

na primeira tem todos os nomes (Funcuinarios e os dependentes) na ordem… o que diferencia eles é a coluna TIPO, que tem a informação (titular, esposa, filho…)

eu preciso separar e salvar da forma correta em uma outra tabela…

johnny_ibadi1

a query retorna assim:

Identificação____NOME_______________________TIPO
1_____________ADENI P BERTO_______________TITULAR
2_____________JOSENILDA DOS S S BE________ ESPOSA
3_____________AMANDA SIMOES BERTO________FILHA
4_____________ALDO AFONSO DA SILVA________TITULAR
5_____________INES ROSA R DA SILVA_________ESPOSA

701____________JOAO FERREIRA_________________FILHO

Sem os _

diego.sas

Brother está sinistro esta sua situação…

public void titulares(ResultSet rs) throws SQLException{   
	        Titular titular = null;   
	        List<Titular> lista = new ArrayList<Titular>();     
	        while(rs.next()){   
	        	if(rs.getString("TIPO").equals("TITULAR")){
	                if(titular != null && !"".equals(titular.getNome())){
	                	lista.add(titular);
	                }
	                titular = new Titular();
	        		System.out.println("\n------------------------------------------------------------------------------------------");   
	                System.out.println("...:: Estamos na linha: " + rs.getRow() + " Do ResultSet ::...");   
	                System.out.println("\n...:: Titular encontrado ::... : " + rs.getString("NOME"));  
	                titular.setNome(rs.getString("NOME"));	  
	            }else{   
	                titular.addDendentes(rs.getString("NOME"));   
	                System.out.println("\n...:: Dependente encontrado: " + rs.getString("NOME") + "::...");   
	            }               
	        }  
	        lista.add(titular);
	}

Fiz concluindo que todos que estão abaixo do titular são dependentes do mesmo!

pedruhenrik

[email removido]

e como vc identifica quem é dependente de quem?

acho q seria melhor se vc tivesse 2 tabelas uma de titulares e outra de dependentes, ai vc faz o mapeamento 1 x N.

posta seu objeto modelo titular.

att,

johnny_ibadi1

A outra tabela esta assim:

Nome__________DEP1________DEP2_…_DEP5

johnny_ibadi1

respondendo a pergunta “Quem é dependente de quem?”

ta na ordem… ex:

João é titular de todos os dependentes que estiverem abaixo dele… até econtrar outro titular, este ira ser titular de todos os que estiverem abaixo dele até encontrar o outro titular…

O problema é que eu recebi este arquivo assim do RH da Empresa eles não conseguem gerar de outra forma…

diego.sas

[email removido:
]respondendo a pergunta “Quem é dependente de quem?”

ta na ordem… ex:

João é titular de todos os dependentes que estiverem abaixo dele… até econtrar outro titular, este ira ser titular de todos os que estiverem abaixo dele até encontrar o outro titular…

O problema é que eu recebi este arquivo assim do RH da Empresa eles não conseguem gerar de outra forma…

Tenta com este exemplo…

public void titulares(ResultSet rs) throws SQLException{     
       Titular titular = null;     
       List&lt;Titular&gt; lista = new ArrayList&lt;Titular&gt;();       
       while(rs.next()){     
        if(rs.getString("TIPO").equals("TITULAR")){   
               if(titular != null && !"".equals(titular.getNome())){   
                lista.add(titular);   
               }   
               titular = new Titular();   
            System.out.println("\n------------------------------------------------------------------------------------------");     
               System.out.println("...:: Estamos na linha: " + rs.getRow() + " Do ResultSet ::...");     
               System.out.println("\n...:: Titular encontrado ::... : " + rs.getString("NOME"));     
               titular.setNome(rs.getString("NOME"));       
           }else{     
               titular.addDendentes(rs.getString("NOME"));     
               System.out.println("\n...:: Dependente encontrado: " + rs.getString("NOME") + "::...");     
           }                 
       }     
       lista.add(titular);
johnny_ibadi1

diego.sas:
[email removido:
]respondendo a pergunta “Quem é dependente de quem?”

ta na ordem… ex:

João é titular de todos os dependentes que estiverem abaixo dele… até econtrar outro titular, este ira ser titular de todos os que estiverem abaixo dele até encontrar o outro titular…

O problema é que eu recebi este arquivo assim do RH da Empresa eles não conseguem gerar de outra forma…

Tenta com este exemplo…

public void titulares(ResultSet rs) throws SQLException{ Titular titular = null; List&lt;Titular&gt; lista = new ArrayList&lt;Titular&gt;(); while(rs.next()){ if(rs.getString("TIPO").equals("TITULAR")){ if(titular != null && !"".equals(titular.getNome())){ lista.add(titular); } titular = new Titular(); System.out.println("\n------------------------------------------------------------------------------------------"); System.out.println("...:: Estamos na linha: " + rs.getRow() + " Do ResultSet ::..."); System.out.println("\n...:: Titular encontrado ::... : " + rs.getString("NOME")); titular.setNome(rs.getString("NOME")); }else{ titular.addDendentes(rs.getString("NOME")); System.out.println("\n...:: Dependente encontrado: " + rs.getString("NOME") + "::..."); } } lista.add(titular);

ME PARECE QUE DESTA FORMA ELE SÓ ADD 1 OBJETO NA LIST ENTENDEU?

PQ OS OBJETOS ESTÃO SENDO CRIADO DENTRO DO WHILE(RS.NEXT()){…}

MAS VOU TESTAR…

pedruhenrik

[email removido]

vc não pode criar 2 tabelas(titular e dependentes) e inserir o conteúdo desse arquivo nas tabelas com os devidos relacionamentos?

quanto ao código acho q eu faria assim:

public void titulares(ResultSet rs) throws SQLException{       
       Titular titular;     
       List&lt;Titular&gt; lista = new ArrayList&lt;Titular&gt;();      

       int i = 0; //gambi total 1

       while(rs.next()){       
        if(rs.getString("TIPO").equals("TITULAR")){

               //gambi total 2
               if(i>=1){
                  lista.add(titular);
               }

               titular = new Titular();                       
               titular.setNome(rs.getString("NOME"));
               i++;
           }else{       
               titular.addDependentes(rs.getString("NOME")); 
           }                   
       }

att,

diego.sas

Testa e depois diz se funfou…

johnny_ibadi1

é isto mesmo o que falei…

segue abaixo os logs…

…:: Titular encontrado ::… : ALEX VIEIRA DA SILVA

…:: Dependente encontrado: JOZELMA VIEIRA DA SILVA::…


…:: Estamos na linha: 698 Do ResultSet ::…

…:: Titular encontrado ::… : DORCINA LINO DE SOUZA


…:: Estamos na linha: 699 Do ResultSet ::…

…:: Titular encontrado ::… : JANDIRA DE J C RODRIGUES

…:: Dependente encontrado: ALINE C RODRIGUES::…


…:: Estamos na linha: 701 Do ResultSet ::…

…:: Titular encontrado ::… : FRANCISCO ARIMATEIA DA COSTA

Tamanho do List titulares: 1

diego.sas
pedruhenrik:
[email removido]

vc não pode criar 2 tabelas(titular e dependentes) e inserir o conteúdo desse arquivo nas tabelas com os devidos relacionamentos?

quanto ao código acho q eu faria assim:

public void titulares(ResultSet rs) throws SQLException{       
       Titular titular;     
       List&lt;Titular&gt; lista = new ArrayList&lt;Titular&gt;();      
   
       while(rs.next()){       
        if(rs.getString("TIPO").equals("TITULAR")){
               titular = new Titular();                       
               titular.setNome(rs.getString("NOME"));         
           }else{       
               titular.addDependentes(rs.getString("NOME")); 
           }                   
       }       

       lista.add(titular);

att,


Desta forma sim, seria adicionado apenas um titular na tabela.

johnny_ibadi1

Eu estou tentando assim…

public List titulares(ResultSet rs) throws SQLException{
		Titular titular = null;
		List&lt;Titular&gt; titulares = new ArrayList&lt;Titular&gt;();
		while(rs.next()){
			if(rs.getString("TIPO").equals("TITULAR")){
				
				System.out.println("\n------------------------------------------------------------------------------------------");
				System.out.println("...:: Estamos na linha: " + rs.getRow() + " Do ResultSet ::...");
				System.out.println("\n...:: Titular encontrado ::... : " + rs.getString("NOME"));
				
				titular = new Titular();
				titular.setNome(rs.getString("NOME"));
				
				titulares.add(titular);// adiciona o objeto na list
				
			}else{ //aqui ele atualiza os dependentes do objeto
				titular.addDendentes(rs.getString("NOME"));
				System.out.println("\n...:: Dependente encontrado: " + rs.getString("NOME") + "::...");
				
				titulares. //tem alguma forma de eu inserir este dependente no list ?
			}
			
		}
		return titulares;
	}

Conseguiram entender??

diego.sas

[email removido:
]é isto mesmo o que falei…

segue abaixo os logs…

…:: Titular encontrado ::… : ALEX VIEIRA DA SILVA

…:: Dependente encontrado: JOZELMA VIEIRA DA SILVA::…


…:: Estamos na linha: 698 Do ResultSet ::…

…:: Titular encontrado ::… : DORCINA LINO DE SOUZA


…:: Estamos na linha: 699 Do ResultSet ::…

…:: Titular encontrado ::… : JANDIRA DE J C RODRIGUES

…:: Dependente encontrado: ALINE C RODRIGUES::…


…:: Estamos na linha: 701 Do ResultSet ::…

…:: Titular encontrado ::… : FRANCISCO ARIMATEIA DA COSTA

Tamanho do List titulares: 1

Muito estranho

public void titulares(ResultSet rs) throws SQLException{       
       Titular titular = null;       
       List&lt;Titular&gt; lista = new ArrayList&lt;Titular&gt;();         
       while(rs.next()){       
        if(rs.getString("TIPO").equals("TITULAR")){     
               if(titular != null && !"".equals(titular.getNome())){   // na primeira vez não será add na lista pois titular é nulo, na segunda vez em diante sera add na lista
                lista.add(titular);     
               }     
               titular = new Titular();     // Cria um novo titular...
            System.out.println("\n------------------------------------------------------------------------------------------");       
               System.out.println("...:: Estamos na linha: " + rs.getRow() + " Do ResultSet ::...");       
               System.out.println("\n...:: Titular encontrado ::... : " + rs.getString("NOME"));       
               titular.setNome(rs.getString("NOME"));         
           }else{       
               titular.addDendentes(rs.getString("NOME"));       
               System.out.println("\n...:: Dependente encontrado: " + rs.getString("NOME") + "::...");       
           }                   
       }       
       lista.add(titular);
diego.sas

Mostra sua classe Titular?

johnny_ibadi1

CLASSE: Titular

package br.com.resil.beans;

import java.sql.Connection;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.sql.Statement;
import java.util.ArrayList;
import java.util.List;

import br.com.resil.dao.GerenciadorDeConexao;

/**
 * @author JohnnY & DannY
 *
 */
public class Titular {
	private String nome;
	private List&lt;String&gt; dependentes = new ArrayList&lt;String&gt;();

	// Gets e Sets .......
	public String getNome() {
		return nome;
	}
	public void setNome(String nome) {
		this.nome = nome;
	
	}
	public void addDendentes(String dependente) {
		//Adicionando o dependente recebido na list
		this.dependentes.add(dependente);
	}
	public String getDependente1(){
		if(dependentes.size()&gt;=1){
			return dependentes.get(0);
		}else{
			return null;
		}
	}

	public String getDependente2(){
		if(dependentes.size()&gt;=2){
			return dependentes.get(1);
		}else{
			return null;
		}
	}

	public String getDependente3(){
		if(dependentes.size()&gt;=3){
			return dependentes.get(2);
		}else{
			return null;
		}
	}

	public String getDependente4(){
		if(dependentes.size()&gt;=4){
			return dependentes.get(3);
		}else{
			return null;
		}
	}

	public String getDependente5(){
		if(dependentes.size()&gt;=5){
			return dependentes.get(4);
		}else{
			return null;
		}
		
		
	}
	public String toString() {
		return "Nome=" + nome + ", dependentes=" + dependentes;
	}
}
johnny_ibadi1

Cara Parece que deu certo…

ms olha só como esta imprimindo…

Tamanho do List titulares: 531
Nome=ADENI P BERTO, dependentes=[JOSENILDA DOS S S BERTO, AMANDA SIMOES BERTO]
Nome=ADENI P BERTO, dependentes=[JOSENILDA DOS S S BERTO, AMANDA SIMOES BERTO]
Nome=ALDO AFONSO DA SILVA, dependentes=[INES ROSA R DA SILVA, VINICIOS EMANUEL RODRIGUES DA SILVA]
Nome=ALDO AFONSO DA SILVA, dependentes=[INES ROSA R DA SILVA, VINICIOS EMANUEL RODRIGUES DA SILVA]
Nome=ALUISIO LIMA DE MATOS, dependentes=[MARIA IVANDA LIMA, TATIANA FREIRE MATOS, LEILA CRISTIANE S MATOS, MONICA LIMA MATOS]
Nome=ALUISIO LIMA DE MATOS, dependentes=[MARIA IVANDA LIMA, TATIANA FREIRE MATOS, LEILA CRISTIANE S MATOS, MONICA LIMA MATOS]

ou esta duplicando, ou estou imprimindo errado…

for(int i=0; i &lt; titulares.size(); i++){
						System.out.println(titulares.get(i));
					}
johnny_ibadi1

Eai Galera…

Conseguir resolver… Ficou assim:

public List titulares(ResultSet rs) throws SQLException{
		Titular titular = null;
		List&lt;Titular&gt; titulares = new ArrayList&lt;Titular&gt;();
		while(rs.next()){

			if(rs.getString("TIPO").equals("TITULAR")){       
				if(titular != null && !"".equals(titular.getNome())){   // na primeira vez não será add na lista pois titular é nulo, na segunda vez em diante sera add na lista  
					titulares.add(titular);       
				}    
				
				System.out.println("\n------------------------------------------------------------------------------------------");
				System.out.println("...:: Estamos na linha: " + rs.getRow() + " Do ResultSet ::...");
				System.out.println("\n...:: Titular encontrado ::... : " + rs.getString("NOME"));

				titular = new Titular();
				titular.setNome(rs.getString("NOME"));

				//titulares.add(titular); ----&gt; estava adicionando novamente (por isto estava duplicando)

			}else{
				titular.addDendentes(rs.getString("NOME"));
				System.out.println("\n...:: Dependente encontrado: " + rs.getString("NOME") + "::...");

			}
		}
		return titulares;
	}

valeww

diego.sas

[email removido:
]Eai Galera…

Conseguir resolver… Ficou assim:

public List titulares(ResultSet rs) throws SQLException{
		Titular titular = null;
		List&lt;Titular&gt; titulares = new ArrayList&lt;Titular&gt;();
		while(rs.next()){

			if(rs.getString("TIPO").equals("TITULAR")){       
				if(titular != null && !"".equals(titular.getNome())){   // na primeira vez não será add na lista pois titular é nulo, na segunda vez em diante sera add na lista  
					titulares.add(titular);       
				}    
				
				System.out.println("\n------------------------------------------------------------------------------------------");
				System.out.println("...:: Estamos na linha: " + rs.getRow() + " Do ResultSet ::...");
				System.out.println("\n...:: Titular encontrado ::... : " + rs.getString("NOME"));

				titular = new Titular();
				titular.setNome(rs.getString("NOME"));

				//titulares.add(titular); ----&gt; estava adicionando novamente (por isto estava duplicando)

			}else{
				titular.addDendentes(rs.getString("NOME"));
				System.out.println("\n...:: Dependente encontrado: " + rs.getString("NOME") + "::...");

			}
		}
		return titulares;
	}

valeww

Ow legal que conseguiu, e engraçado que ficou igual ao que eu te passei e disse que não funcionou…
Flw

Criado 12 de dezembro de 2011
Ultima resposta 13 de dez. de 2011
Respostas 25
Participantes 3