java - Java 中的字符串构建性能

标签 java string

我在字符串处理方面遇到了性能问题。 我有一个日志文件(简单的文本文件),我必须操作它并在文本中执行一些更改。
所以程序在一个巨大的字符串中逐行添加。 基本上是这样。

while (not_finished) { 
   // create new stringAdd; 
   stringResult=stringResult + stringAdd + "\n"; 
} 
// output to a textArea in window
textArea.setText(stringResult);

现在这方面的表现很糟糕,所以我升级到 StringBuilder

StringBuilder result= new StringBuilder();    
while (not_finished) { 
// create new stringAdd; 
result.append( stringAdd +"\n"); 
} 
// output to a textArea in window
textArea.setText(result.toString()); 

这要快得多。字符串一旦添加到结果将不会改变。 当超过 400,000 行(一行有 1 到 70 个字符)时,问题不在于性能。

如何提高构建字符串的性能? 你有什么想法吗?

最佳答案

有两件事可以改进。您仍在循环内连接字符串,因此您可以尝试:

result.append(stringAdd).append('\n'); 

如果你事先知道字符串的大小,你可以最小化内部缓冲区调整大小的次数:

// expecting 30k characters:
StringBuilder result= new StringBuilder(30_000);    

关于java - Java 中的字符串构建性能,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24802704/

相关文章:

java - 反转相反的颜色

java - 链表的数据结构

java - 如何使用 Java Scanner 读取命题逻辑符号作为输入?

java - com.google.gwt.dev.jjs.InternalCompilerException : Unexpected error during visit

java - 为什么 "\r\n".split ("\r\n") 返回一个空数组?

javascript - 包含换行符的 PHP 字符串会导致打印 Javascript 时出现问题

jquery - 使用 JQuery 淡入字符串字符?

java - 如何从Java中的文件中删除换行符?

c++ - 为什么我可以用多个字符串文字构造一个字符串?

Java文本分割算法