有什么(任何方式)比StringWriter更快地连接java字符串?

时间:2014-10-09 04:10:31

标签: java string string-concatenation stringwriter

我正在提取一堆简单数据并构建一个大的(1kB - 2kB)字符串。我是这种语言的新手,但在阅读之后,这似乎是最快的(即最少量的复制):

String tmpTable = "<table border=\"1\">" + System.lineSeparator();
StringWriter stringWriter = new StringWriter(1024);
String tr = "";

stringWriter.append(tmpTable);
for(Project p:projectSet) {
  tr = String.format(trFmt, p.getId(), p.getTitle(),
    p.getPriority(), p.getStatus());
  stringWriter.append(tr);
}
stringWriter.append("</table>" + System.lineSeparator());
stringWriter.flush();
stringWriter.close(); // old habits

是否有更好的&#34;方式是什么?

如果是&#39; C&#39;,我可能倾向于使用&#34; char * argv []&#34;有点交易。

2 个答案:

答案 0 :(得分:3)

StringBuilder是标准配置。它具有初始缓冲区大小构造函数和您要查找的追加方法。要从中获取值,请在构建器上调用toString()。没有办法(需要)关闭()或冲洗()它。

答案 1 :(得分:2)

  

有更好的方法吗?

,我相信有更好的方法。

您似乎正在将内存中的HTML构建为大型String。我建议你不要那样做。

相信您应该将数据流式传输到客户端(缓冲)OutputStream。显然,如果您需要一些格式化(或者通过区域设置从资源包加载String),您可以执行有限的计算(稍后可能使用缓存对其进行优化),然后恢复流式传输。添加额外的String缓冲区(根据我的经验)伤害性能。