【发布时间】:2012-05-17 03:59:33
【问题描述】:
我正在开发一个将字符分隔列表返回给其客户端的服务器。 为了构建这些列表,我必须通过 for-each 循环检测第一次迭代:
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() ;
有没有办法在没有标志的情况下做到这一点?
【问题讨论】:
-
为什么一定要检测循环的第一次迭代?
-
代替
forEach循环,您可以手动执行正常的for循环,从索引1开始而不是0。 -
看看这个 SO 问题:stackoverflow.com/questions/63150/… - 这可能是你的更好的解决方案。
-
...或用户 list.indexOf(s) 获取索引...
-
@vilo:这可能是对每次迭代的线性时间命中,因此对例程的 O(n^2) 命中只是为了将一些文本粘合在一起。