我正在提取一堆简单数据并构建一个大的(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;有点交易。
答案 0 :(得分:3)
StringBuilder是标准配置。它具有初始缓冲区大小构造函数和您要查找的追加方法。要从中获取值,请在构建器上调用toString()。没有办法(需要)关闭()或冲洗()它。
答案 1 :(得分:2)
有更好的方法吗?
是,我相信有更好的方法。
您似乎正在将内存中的HTML构建为大型String
。我建议你不要那样做。
我相信您应该将数据流式传输到客户端(缓冲)OutputStream
。显然,如果您需要一些格式化(或者通过区域设置从资源包加载String
),您可以执行有限的计算(稍后可能使用缓存对其进行优化),然后恢复流式传输。添加额外的String
缓冲区(根据我的经验)伤害性能。