For com iterator

3 respostas
T

Olá, pessoal!

Não entendi porque esta atribuição não está funcionando. Alguém pode me explicar?

...

for (Iterator iter = arrayLancamentosMOVincVO.iterator(); iter.hasNext();) {
			LancamentosMOVinculosVO lancamentosMOVincVO = (LancamentosMOVinculosVO) iter.next();			
			
			for (Iterator iterator = arrayLancamentosMOVO.iterator();iterator.hasNext();) {
				LancamentosMOVO lancamentoMOVO = (LancamentosMOVO) iterator.next();
				
				if(lancamentoMOVO.getLancCodigo().equals(lancamentosMOVinculosVO.getLancCodigo())){
					lancamentosMOVinculosVO.setLancPrcsDataBaixa(lancamentoMOVO.getLancDTBaixa());					
				}
			}			
}


...

Ao sair do for, debugo o arrayLancamentosMOVincVO para ver os valores do atributo lancPrcsDataBaixa dos VOs. Os valores estão nulos :frowning:

Obrigada!!

3 Respostas

E

Estranho esse comportamento, normalmente acontece de “mexer” nos elementos de uma lista, vetor, objeto, qdo vc manipula outra lista, vetor, objeto, e eles estao na mesma posição da memória(retirando ou inserindo valores), se o seu vetor nao estah nulo no momento da interação, ou seja, quando o laço eh percorrido, nao era para ele estar nulo após ter interagido todos os elementos.
Mas tenta fazer assim:

for(Iterator<?> iter= arrayLancamentosMOVincVO.iterator();((Iterator<?>) iter).hasNext();){
		 LancamentosMOVinculosVO lancamentosMOVincVO = new LancamentosMOVinculosVO();
		 lancamentosMOVincVO =(LancamentosMOVinculosVO)iter.next();
		 for (Iterator<?> iterator = arrayLancamentosMOVO.iterator();((Iterator<?>) iterator).hasNext();) {
				LancamentosMOVO lancamentoMOVO = new LancamentosMOVO();
				lancamentoMOVO = (LancamentosMOVO)iterator.next();
				if(lancamentoMOVO.getLancCodigo().equals(lancamentosMOVinculosVO.getLancCodigo())){
					lancamentosMOVinculosVO.setLancPrcsDataBaixa(lancamentoMOVO.getLancDTBaixa());					
				}
			}		
	}
Guilherme_Gomes

O seu código parece correto, da uma debugada, veja se os arrays estao preenchidos e se tudo esta funcionando como o esperado.

Outra coisa, você está criando um LancamentosMOVO a toa, tem um new que não é usado pois você da o iterator.next() em seguida.

T

Obrigada pela ajuda!!

Descobri o que está acontecendo. Na verdade foi uma distrãção minha, olhem só:

for (Iterator iter = arrayLancamentosMOVincVO.iterator(); iter.hasNext():wink: {
LancamentosMOVinculosVO lancamentosMOVincVO = (LancamentosMOVinculosVO) iter.next();

for (Iterator iterator = arrayLancamentosMOVO.iterator();iterator.hasNext();) {   
            LancamentosMOVO lancamentoMOVO = (LancamentosMOVO) iterator.next();   
               
            if(lancamentoMOVO.getLancCodigo().equals(lancamentosMOVinculosVO.getLancCodigo())){   
               [b] lancamentosMOVinculosVO[/b].setLancPrcsDataBaixa(lancamentoMOVO.getLancDTBaixa());                     
            }   
        }

}

Estou setando em outro VO o valor e não no VO do arrayLancamentosMOVincVO :?

O do array é lancamentosMOVincVO e estou setando no lancamentosMOVinculosVO.

O nome é pareceido, por isso a confusão…

Até

Tks! :wink:

Criado 7 de abril de 2009
Ultima resposta 7 de abr. de 2009
Respostas 3
Participantes 3