[RESOLVIDO] Ajuda saber última linha Iterator

26 respostas
programmer_ed

Pessoal boa tarde, estou usando interator pra trabalhar com o resultado de uma busca, mas preciso verificar se é última linha
como segue abaixo

Iterator<ResultSet> it = getBusca();

while (it.hasNext()) 
{
   rs = it.next();   
   
   // aqui quero verificar se é a última linha e exibir
   // System.out.println(":::::::::::::::: Last LINE ::::::::::::::::::");
  

}

dese já obrigado

26 Respostas

Mikhas

Se você quiser executar algo depois da ultima linha, como parace ser o que você quer no seu comentario… você pode colocar o codigo depois do while… caso contrario você pode usar um contador e verificar pelo tamanho da coleção que gerou o iterator.

A

a resposta para sua dúvida está no próprio código que postou…

quando for a última alinha (após chamada do next) o método hasNext retornará false

E
Iterator<ResultSet> it = getBusca();  

 boolean noRecords = true;   
 while (it.hasNext())   
 {  
    noRecords = false;
    rs = it.next();     
...
 }  
if (noRecords) {
     System.out.println ("Empty");
} else {
     System.out.println ("LAST LINE");
}
Lucas_Abbatepaolo

nao entendi direito o codigo acima…
creio que poderia ser feito assim tb…

while (it.hasNext())  {    
 //seu codigo aqui
    
  if (it.next() == null) {  
      System.out.println ("LAST LINE");  
  } 
}
programmer_ed

o que eu preciso é dentro do while

Lucas_Abbatepaolo
Lucas Abbatepaolo:
nao entendi direito o codigo acima.. creio que poderia ser feito assim tb..
while (it.hasNext())  {    
 //seu codigo aqui
    
  if (it.next() == null) {  
      System.out.println ("LAST LINE");  
  } 
}
programmer_ed

Ainda não é isso… ele nem entra no if

A

leia minha resposta…

programmer_ed

tentei usar como vc disse, mas só retorna com valor…

programmer_ed

tentei assim:

Iterator<ResultSet> it = getBusca();

while (it.hasNext())     
		{    
			rs = it.next();     
			
			if (!it.hasNext())
			{
				System.out.println("LAST LINE");
			}
			else
			{
				System.out.println("TRUE LINE");
			}
		}

mas só retorna true

A

O que significa “só retorna true” ?

Se o iterator só tiver um registro ele vai sempre imprimir “Last Line” e sair do loop…

Se tiver mais de uma deve imprimir “TRUE LINE” algumas vezes e por último “Last Line”…

qual a saída desse seu exemplo?

Ps: Só para confirmar, você quer a última linha do iterator ou do resultset?

programmer_ed

Sempre sai true line, entendeu ?

eu tbm achei que se houvesse mais de uma linha imprimiria TRUE LINE e na ULTIMA LAST LINE

mas só exibe TRUE LINE

programmer_ed

Quero saber a última linha que retorna da busca.

Lucas_Abbatepaolo

Voce não pode usar um LinkedList ao invez de um iterator…
dai é so vc usar o metodo getLast();

luciano2

A interface resultset tem o método last() que move o cursor para o ultimo registro do resultset.

Seu método getBusca está retornando um Iterator de resultset? Você tem vários resultSet?
Sua consulta não deveria retornar somente um resultset e este seria iterado utilizando o método next()?

Explique melhor que tecnologias você está utilizando e como funciona o getBusca()

programmer_ed

Eu retorno somente um iterator e faço o while dos resultados,

ando linha a linha
while (it.hasNext())

mas quero verificar se estou na última linha

luciano2

Não sei bem como está funcionando essa sua aplicação, mas se é iterator seu problema é resolvido assim.

do{ Object obj = it.Next() if(!it.hasNext()){ executa alguma operação } }while(it.hasNext());

você poderia fazer a mesma coisa com um while simples ou com um for se a lógica exigir.

programmer_ed

aí ocorre o seguinte erro:

java.lang.NullPointerException

aluisiodsv

Meu deus …
isso não funciona pra vc ??

while () {

    if ( ! it.hasNext()){
        // Esta é a última linha ..

    }

}
programmer_ed

nao
nem exibe

while (it.hasNext()) {  
		  
		    if ( ! it.hasNext()){  
		    	System.out.println("LAST LINE");		  
		    }  
		  
		}
Lucas_Abbatepaolo

Como ja te perguntei anteriormente vc tem q usar o Iterator…
vc naum pode usar um LinkedList ou um ArrayList???

A
programmer_ed:
nao nem exibe
while (it.hasNext()) {  
		  
		    if ( ! it.hasNext()){  
		    	System.out.println("LAST LINE");		  
		    }  
		  
		}

Você deve estar fazendo algo diferente do que está nos mostrando.

Se ele nunca imprimir isso, seu while está em loop infinito.

Lucas_Abbatepaolo
AbelBueno:
programmer_ed:
nao nem exibe
while (it.hasNext()) {  
		  
		    if ( ! it.hasNext()){  
		    	System.out.println("LAST LINE");		  
		    }  
		  
		}

Você deve estar fazendo algo diferente do que está nos mostrando.

Se ele nunca imprimir isso, seu while está em loop infinito.

ou nem entrou no loop...

programmer_ed

Resolvi assim:

boolean files = false;

while (it.hasNext()) {    
             
             files = true;
             ...
             
}

if (files )
   // chamo o metodo

vlw a todos, muito obrigado

luciano2

Com certeza você não está postando o código todo porque while(it.hasNext()) sem it.next é loop infinito de cara

pmlm

programmer_ed:

Resolvi assim:

boolean files = false;

while (it.hasNext()) {    
             
             files = true;
             ...
             
}

if (files )
   // chamo o metodo

vlw a todos, muito obrigado

Isso não te dá a última linha, só diz se houve dados devolvidos ou não.

Criado 5 de outubro de 2010
Ultima resposta 6 de out. de 2010
Respostas 26
Participantes 8