forEach

Usando o forEach é possível saber qual o primeiro e último elemento de uma lista?

dah sim… mas ainda eh melhor usar o Iterator neste caso…

pro primeiro item… vc faria uma condicao booleana indicando que ele eh o primeiro… e grava numa variavel…

para o ultimo… vc declararia a variavel de iteração fora do loop… assim que o loop acabasse vc teria acesso a ela ainda…

entendeu? =]

[quote=alucardeck]dah sim… mas ainda eh melhor usar o Iterator neste caso…

pro primeiro item… vc faria uma condicao booleana indicando que ele eh o primeiro… e grava numa variavel…

para o ultimo… vc declararia a variavel de iteração fora do loop… assim que o loop acabasse vc teria acesso a ela ainda…

entendeu? =]
[/quote]

Olha eu entendi mas vc ta falando sobre variavel de iteracao, entao nao eh um foreach certo?

o que é um forEach para voce?

ArrayList list = new ArrayList<String>();

for(String str : list){

}

isso não é?

Na verdade, o funcionamento seria exatamente igual. Isso porque o método hasNext() só retorna false depois do último elemento ter sido removido com o comando next(). Então, não adianta a variável de iteração ter sido declarada fora do loop.

É possível saber quem é o primeiro e o último elemento, mas o código é extremamente ineficiente:

SuaClasse primeiro = null; SuaClasse ultimo = null; boolean primeiro = true; for (SuaClasse elemento : suaLista) { if (primeiro) { primeiro = elemento; } ultimo = elemento; }

Se você tiver um List em mãos, use os índices:

SuaClasse primeiro = list.get(0);
SuaClasse ultimo = list.get(list.size()-1);

Se tiver em mãos um SortedSet, use os métodos first() e last().

Pra pegar o último era simples !

SuaClasse ultimo = list.get(list.size()-1);  

Obrigado Viny. E obrigado allucardeck

Já resolvi aqui.
Vou dar uma olhada nesse SortedSet que não conhecia.

[ ]

[quote=cafezin]Pra pegar o último era simples !

SuaClasse ultimo = list.get(list.size()-1);  

Obrigado Viny. E obrigado allucardeck

Já resolvi aqui.
Vou dar uma olhada nesse SortedSet que não conhecia.

[ ][/quote]

Só não vai usar este codigo dentro do loop pois a performace vai lá embaixo…