如何为除最后一行以外的所有行附加换行符?

2022-09-01 07:56:14

我正在迭代HashMap(请参阅我之前的问题以获取更多详细信息)并构建一个由Map中包含的数据组成的字符串。对于每个项目,我将有一个新行,但对于最后一个项目,我不想要新行。我怎样才能做到这一点?我想我可以进行某种检查,看看该条目是否是最后一个,但我不确定如何实际做到这一点。

谢谢!


答案 1

将您的思维过程从“除最后一次之外的所有时间附加换行符”更改为“除第一次之外的所有时间都附加换行符”:

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());
}

答案 2

一种方法(向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";
}