Jon*_*eet 71
将你的思维过程从"除了最后一次附加一个换行符"改为"除了第一次前置换行符":
boolean first = true;
StringBuilder builder = new StringBuilder();
for (Map.Entry<MyClass.Key,String> entry : data.entrySet()) {
if (first) {
first = false;
} else {
builder.append("\n"); // Or whatever break you want
}
builder.append(entry.key())
.append(": ")
.append(entry.value());
}
Run Code Online (Sandbox Code Playgroud)
Joe*_*orn 69
一种方法(向Jon Skeet道歉,借用他的部分Java代码):
StringBuilder result = new StringBuilder();
string newline = "";
for (Map.Entry<MyClass.Key,String> entry : data.entrySet())
{
result.append(newline)
.append(entry.key())
.append(": ")
.append(entry.value());
newline = "\n";
}
Run Code Online (Sandbox Code Playgroud)
Jay*_* R. 13
那这个呢?
StringBuilder result = new StringBuilder();
for(Map.Entry<MyClass.Key,String> entry : data.entrySet())
{
builder.append(entry.key())
.append(": ")
.append(entry.value())
.append("\n");
}
return builder.substring(0, builder.length()-1);
Run Code Online (Sandbox Code Playgroud)
强烈的道歉并感谢Jon和Joel从他们的例子中"借用".
通常我会使用apache-commons-lang StringUtils #joout .虽然编写所有这些实用程序功能并不是很难,但重用现有的经过验证的库总是更好.Apache-commons充满了有用的东西!
如果您使用迭代器而不是 for...each 您的代码可能如下所示:
StringBuilder builder = new StringBuilder();
Iterator<Map.Entry<MyClass.Key, String>> it = data.entrySet().iterator();
while (it.hasNext()) {
Map.Entry<MyClass.Key, String> entry = it.next();
builder.append(entry.key())
.append(": ")
.append(entry.value());
if (it.hasNext()) {
builder.append("\n");
}
}
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
89111 次 |
| 最近记录: |