2012-08-30 22 views
1

我想創建一個串聯大約3000個其他字符串的字符串。 我聽說使用如此多的字符串可能效率低下,因爲它們位於某種 池中,在不需要時可能不會立即被GC拾取。何時以及如何高效地使用StringBuilder/Buffer?

這是去它的最好辦法 -

StringBuilder sb = new StringBuilder(""); 

for(String s : arrayWith3000Strings) 
{ 
    sb.append(s); 
} 

或者我應該串接所有字符串合併爲一個字符串?

+0

你可以做'新的StringBuilder()',而不是'新的StringBuilder( 「」)' –

+0

請不要用StringBuffer,如果你可以使用StringBuilder。幾乎沒有任何理由起訴StringBuffer。 –

回答

2

是的,你的代碼是好的。

即使使用字符串連接,它也會創建新的String objects,因爲字符串是不可變的。

+0

- 是的,會有很多字符串因此。 如果我使用concat而不是使用concat呢?會有什麼區別嗎? –

+0

concat是對String的操作,對String的所有操作都會導致新的String,所以這不是處理這個問題的好方法。您的代碼是最佳方式。 – kosa

+0

謝謝...還有一種圖形方式來顯示和比較這些方法與迭代= 100,000? –

-1

StringBuffer的性能甚至比StringBuilder還要好,但StringBuffer不是線程安全的!

編輯:當然,這是反之亦然:)

+1

'StringBuffer'是線程安全的。 – jn1kk

+0

你的意思是'StringBuilder'不是線程安全的。 – Reimeus

+0

而'StringBuilder'通常會發揮兩者中最好的效果。 – jn1kk

相關問題