Olá!
Tenho uma dúvida sobre a utilização de Iterators: criei um ArrayList, e um iterator deste ArrayList.
Para pegar os itens da lista, devo usar o método next do iterator, certo? Após usar o next, o iterator fica na primeira posição da lista, e usando novamente o next, consigo pegar o próximo item da lista.
Mas como eu faria para pegar o item que está na posição atual do iterator? Por exemplo, dei um next, e agora estou no segundo item da lista e preciso acessá-lo novamente, sem ir para o próximo.
Guarde esse item numa variável. E não use o next novamente.
Por exemplo:
public void excluiItensPorTipo(List<Item> itens) {
Iterator<Item> it = itens.iterator();
while (it.hasNext) {
Item item = it.next();
if (item.getTipo() == tipoAExcluir) {
it.remove();
System.out.println("Excluído: " + item.getDescricao());
}
}
}
Note que a variável item foi usada 3 vezes.
Não dá ^^.
Por isso você tem que guardar o Objeto retornado (no .next() ).
ops… tava digitando na hora… rs, bem… é isso ai.
haha
Só lembrando que no caso de uma iteração simples (sem exclusão) é melhor usar o for each:
for (Item item : listaDeItens) {
System.out.print("Descrição: " + item.getDescricao());
System.out.println(" Preço: " + item.getPreco());
}
Esse é de longe o caso mais comum. E fica mais limpo do que:
Iterator it = listaDeItens.iterator();
while (it.hasNext()) {
Item item = it.next();
System.out.print("Descrição: " + item.getDescricao());
System.out.println(" Preço: " + item.getPreco());
}
Valew galera! 
Mas é exatamente isso que eu não queria fazer…
Meu problema é que eu tenho uma classe com um método que devolve o próximo item da lista, usando o método next do iterator. Eu precisava criar um outro método, que acessaria o item que foi devolvido pelo next do método anterior (não sei se ficou confuso, mas foi o melhor que eu consegui explicar), e achei que seria desperdício de memória criar outro objeto na memória só para guardar esse valor…
Você não vai criar outro objeto, só outra referência ao objeto retornado. Isso significa… 4 bytes.
Sua máquina é tão restrita em memória assim!?!?!?
Hahahaha! Acho que a minha máquina agënta mais 4b sem ficar muito pesada sim! 
Mas já implementei a solução usando uma outra referencia para guardar o objeto retornado pelo iterator!
Mais umas vez, vallew galera!!!
