Ond*_*kar 2 java string concatenation string-concatenation
我在一个循环中连接一个字符串,但它需要很长时间,为什么呢?
for (String object : jsonData) {
counter++;
finalJsonDataStr += object;
}
Run Code Online (Sandbox Code Playgroud)
变量object是一块JSON,最多70个字符,循环大约50k次.
我理解一些人的建议StringBuffer,StringBuilder但是这个链接说,它没有性能改进:StringBuilder vs Java中toString()的字符串连接
使用String Builder附加到字符串.
连接时,Java实际上是在创建一个带有连接结果的新String.做多次,你无所不在地创造了无数的字符串.
尝试:
StringBuilder sb = new StringBuilder();
for (String object : jsonData) {
counter++;
sb.append(object.toString()); //this does the concatenation internally
//but is very efficient
}
finalJsonDataStr = sb.toString(); //this gives you back the whole string
Run Code Online (Sandbox Code Playgroud)
备注:
当你做的事情
myString = "hello " + someStringVariable + " World!" + " My name is " + name;
Run Code Online (Sandbox Code Playgroud)
编译器非常智能,可以用一个替换所有这些StringBuilder,例如:
myString = new StringBuilder("hello ")
.append(someStringVariable)
.append(" World!")
.append(" My name is ")
.append(name).toString();
Run Code Online (Sandbox Code Playgroud)
但由于某些原因我不知道,当连接发生在循环中时,它不会这样做.
| 归档时间: |
|
| 查看次数: |
1097 次 |
| 最近记录: |