我遇到性能问题。有没有人有更快/更好的解决方案来执行以下操作:
String main = "";
for (String proposition : propositions) {
if (main.length() == 0) {
main = proposition;
} else {
main = "|(" + proposition + "," + main + ")";
}
}
我知道concat和stringbuilder更快,但是我看不到如何使用这些方法。由于以下代码行:
main = "|(" + proposition + "," + main + ")";
提前致谢!
最佳答案
因此,据我所知,这里存在3个问题:
通过进行一些更改可以使其更快:
)
的数量,并在循环完成后附加这些数量。 经过这些更改,该算法应该能够使用StringBuilder并且更快。
尝试算法:
int length = propositions.size();
if (length == 0) {
main = "";
} else {
StringBuilder sb = new StringBuilder();
int nestingDepth = 0;
// Reverse loop, ignoring 0th element due to special case
for (int i = length - 1; i > 0; i--) {
sb.append("|(").append(propositions.get(i)).append(',');
nestingDepth++;
}
// Append last element due to special casing
sb.append(propositions.get(0));
for (int i = 0; i < nestingDepth; i++) {
sb.append(')');
}
main = sb.toString();
}
我相信这应该会产生正确的结果,但是应该给出正确的想法。