I use the following code idiom all the time. I know it seems simple, and I know there are other ways of doing it, but when I first saw it a penny dropped.
Writer out = ...;
List l = ...;
String sep = "";
for (Iterator i = l.iterator(); i.hasNext(); ) {
String s = (String) i.next();
out.write(sep);
out.write(s);
sep = ",";
}
You can see how this works:
- output the separator before outputting the value,
- the separator is blank to start with, and
- the “real” separator is setup at the end of the first iteration.
I like it:
- there are no explicit “is this the first/last iteration” conditionals,
- the assignment to
sep
becomes redundant after the first iteration; but the assignment is cheap (and cheaper than any conditional).