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…