我正在使用一个服务器,它将字符分隔列表返回给它的客户端.为了构建这些列表,我必须通过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() ;
Run Code Online (Sandbox Code Playgroud)
没有旗帜,有没有办法做到这一点?
Jon*_*eet 20
对于这种情况,一种更简单的方法是注意你总是可以附加一个空字符串:
// 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;
}
Run Code Online (Sandbox Code Playgroud)
或者(并且最好)使用Guava的Joiner类开始:)
这个"木匠"场景几乎总是给出了这个要求 - 所以只需使用Joiner.对于其他方案,请使用常规for循环或根据您的代码使用条件.
不使用foreach,而是手动使用迭代器:
Iterator<String> it = list.iterator();
if(it.hasNext()){
doSomeThingForTheFirstTime(it.next());
while(it.hasNext()){
doSomethingElse(it.next);
}
}
Run Code Online (Sandbox Code Playgroud)
(顺便说一句,这几乎是Guava的Joiner课程在内部所做的,尽管在更高的层次上)
| 归档时间: |
|
| 查看次数: |
15669 次 |
| 最近记录: |