我正在迭代HashMap(请参阅我之前的问题以获取更多详细信息)并构建一个由Map中包含的数据组成的字符串.对于每个项目,我将有一个新行,但对于最后一项,我不想要新行.我怎样才能做到这一点?我以为我可以这么检查,看看这个条目是否是最后一个,但我不确定如何实际做到这一点.
谢谢!
将你的思维过程从"除了最后一次附加一个换行符"改为"除了第一次前置换行符":
boolean first = true; StringBuilder builder = new StringBuilder(); for (Map.Entryentry : data.entrySet()) { if (first) { first = false; } else { builder.append("\n"); // Or whatever break you want } builder.append(entry.key()) .append(": ") .append(entry.value()); }
一种方法(向Jon Skeet道歉,借用他的部分Java代码):
StringBuilder result = new StringBuilder(); string newline = ""; for (Map.Entryentry : data.entrySet()) { result.append(newline) .append(entry.key()) .append(": ") .append(entry.value()); newline = "\n"; }
那这个呢?
StringBuilder result = new StringBuilder(); for(Map.Entryentry : data.entrySet()) { builder.append(entry.key()) .append(": ") .append(entry.value()) .append("\n"); } return builder.substring(0, builder.length()-1);
强烈的道歉并感谢Jon和Joel从他们的例子中"借用".
通常我会使用apache-commons-lang StringUtils #joout .虽然编写所有这些实用程序功能并不是很难,但重用现有的经过验证的库总是更好.Apache-commons充满了有用的东西!