Java 中增强型 for 循环的最后一次迭代

有没有办法确定循环是否最后一次迭代。我的代码看起来像这样:

int[] array = {1, 2, 3...};
StringBuilder builder = new StringBuilder();

for(int i : array)
{
    builder.append("" + i);
    if(!lastiteration)
        builder.append(",");
}

现在问题是我不想在上一次迭代中附加逗号。现在有没有办法确定它是最后一次迭代,还是我被困在for循环或使用外部计数器进行跟踪。


答案 1

另一种方法是在追加 i 之前追加逗号,只是在第一次迭代时不追加逗号。(顺便说一句,请不要使用 - 你真的不想要这里的串联,StringBuilder有一个非常好的append(int)重载。"" + i

int[] array = {1, 2, 3...};
StringBuilder builder = new StringBuilder();

for (int i : array) {
    if (builder.length() != 0) {
        builder.append(",");
    }
    builder.append(i);
}

这样做的好处是它可以与任何一个一起使用 - 你不能总是索引东西。(当你真正使用StringBuilder时,“添加逗号,然后在最后删除它”是一个很好的建议 - 但它不适用于像写入流这样的事情。不过,这可能是解决这个确切问题的最佳方法。Iterable


答案 2

另一种方法:

String delim = "";
for (int i : ints) {
    sb.append(delim).append(i);
    delim = ",";
}

更新:对于 Java 8,您现在拥有收集器