Saber se é a última iteração do foreach

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.