簡體   English   中英

從字符列表中創建字符串然后清除它的最有效方法

[英]Most efficient way to create a string out of a list of characters then clear it

我試圖創建一種類似JSON的格式來從文件中加載組件,並且在編寫解析器時遇到了一個有趣的性能問題。

解析器逐個字符地讀取文件,因此我有一個LinkedList作為緩沖區。 到達鍵( :或值( , )的末尾后,必須清空緩沖區,並使用該緩沖區構造一個字符串。

我的問題是最有效的方法是什么。

我的兩個最佳選擇是:

for (int i = 0; i < buff.size(); i++)
    value += buff.removeFirst().toString();

value = new String((char[]) buff.toArray(new char[buff.size()]));

不用猜測,您應該編寫一個基准。 看一看如何在Java中編寫正確的微基准,以了解如何使用JMH編寫基准。

當您使用+運算符連接1個字母的String for循環效率不高。 這將導致創建並立即丟棄中間的String對象。 如果計划在循環中進行串聯,則應使用StringBuilder

第二個選項應該根據古代智慧數組中的文章使用零長度數組,該文章深入探討了JVM的內部細節:

value = new String((char[]) buff.toArray(new char[0]));

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM