Detecting the first iteration through a for-each loop in Java

foreach, java

Solution

One simpler way for this situation is to note that you can always append an empty string:

// For the first iteration, use a no-op separator
String currentSeparator = "";
for (String s : list) {
    builder.append(currentSeparator);
    builder.append(s);
    // From the second iteration onwards, use this
    currentSeparator = separator;
}

Alternatively (and preferrably) use Guava's `Joiner` class to start with :)

This "joiner" scenario is almost always the one given for this requirement - so just use `Joiner`. For other scenarios, either use a regular `for` loop or use the condition as per your code.

Problem

I'm working on a server that returns character separated lists to its client. In order to build these lists I have to detect the first iteration through a for-each loop: ``` StringBuilder builder = new StringBuilder() ; boolean firstIterationFlag = true ; for ( String s : list ){ if ( firstIterationFlag) { firstIterationFlag = false ; } else { builder.append(separator); } builder.append(s) ; } return builder.toString() ; ``` Is there a way of doing this without the flag?

Original source

Related problems