1

我正在提取一堆简单的数据并构建一个大的(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

有没有更好的办法?

如果它是“C”,我可能倾向于使用“char *argv[]”之类的交易。

4

2 回答 2

3

StringBuilder是标准使用。它具有初始缓冲区大小构造函数和您正在寻找的附加方法。要从中获取价值,请在构建器上调用 toString()。没有办法(需要) close() 或 flush() 它。

于 2014-10-09T04:14:09.770 回答
2

有没有更好的办法?

的,我相信有更好的方法。

您似乎正在将内存中的 HTML 构造成一个大的String. 我建议你不要那样做。

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

于 2014-10-09T04:25:14.370 回答