Olá pessoal,
gostaria de saber se tem alguma forma de saber se é a última iteração do foreach
for(String s: lista){
//se é a última vez que entra no laço, faz algo
}
o equivalente (sem for each) seria algo mais ou menos assim
for(int i=0; i<lista.size(); i++){
s=lista.get(0);
if(i == (lista.size() + 1)){
//se é a última vez que entra no laço, faz algo
}
}
Então, teria como fazer algo semelhante usando o foreach?
OBS: gostaria de usar o foreach (ao invés do último código acima) pois é muito mais legível
A resposta simples é “não”.
Costumo usar um contador adicional e mais o foreach nesse tipo de situação, porque nem sempre é possível iterar sobre a coleção usando um índice (como é o caso de um Set).
O código para verificar se é a última iteração está errado. Será a última se “i + 1 == lista.size()” ou “i == lista.size() - 1”. Perceba que você colocou o contrário disso.
E a reposta para sua pergunta o entanglement já deu: se precisar realmente fazer isso, use um contador a parte.
Você também pode utilizar um iterator, que possue o método hasNext().
List<Integer> list = Arrays.asList(new Integer[]{1, 2, 3, 4, 5});
for (Iterator<Integer> i = list.iterator(); i.hasNext();) {
Integer e = i.next();
if (!i.hasNext()) {
System.out.println(e + " foi o último");
}
}
Beleza pessoal,
o jeito é usar um contador mesmo
marcobiscaro2112, realmente me equivoquei nesse trecho do código, valeu.