首頁 >Java >java教程 >項目 注意字串連接效能

項目 注意字串連接效能

DDD
DDD原創
2024-10-17 22:24:29740瀏覽

1。使用運算子 ( ) 連接字串:
使用運算子連接字串對於少量連接來說很方便,但由於字串的不可變性,在大規模操作時會出現效能問題。
每次建立新字串時,都會複製所有先前字串的內容,從而導致大型串聯的時間成二次方。

不正確的範例(與 重複連接):

public String criaFatura(List<Item> itens) {
    String fatura = "";
    for (Item item : itens) {
        fatura += item.toString();  // ineficiente para grandes listas
    }
    return fatura;
}

2。使用 StringBuilder 提高效能:
不使用 ,而是使用 StringBuilder,它允許您有效率地修改字串,根據需要動態分配記憶體。
使用 StringBuilder 的串聯時間是線性的,這顯著提高了效能。

正確範例(使用 StringBuilder):

public String criaFatura(List<Item> itens) {
    StringBuilder fatura = new StringBuilder(itens.size() * 80);  // pré-alocação
    for (Item item : itens) {
        fatura.append(item.toString());
    }
    return fatura.toString();
}

3。性能對比:
即使在 Java 6 進行了改進以優化運算符之後,使用 StringBuilder 仍然更有效率。在測試機上,在 100 個項目的場景中,使用 StringBuilder 比操作符快 6.5 倍。

沒有預先分配的最佳化範例:

public String criaFatura(List<Item> itens) {
    StringBuilder fatura = new StringBuilder();  // sem pré-alocação
    for (Item item : itens) {
        fatura.append(item.toString());
    }
    return fatura.toString();
}

4。這個故事的寓意:
不要用它來連接許多字串。隨著串聯數量的增加,效能很快就會變得不可接受。
使用 StringBuilder.append 或字元數組等替代方案來進行大量串聯。

5。其他選擇:
除了 StringBuilder 之外,您還可以考慮使用字元陣列進行大規模處理或更有效地組合字串,特別是在需要更精細地控制效能時。

結論:
使用 StringBuilder 高效連接字串。
避免在循環或大量字串中使用運算符,因為隨著連接數量的增加,效能會顯著下降。

書中的範例:

Item  Cuidado com o desempenho da concatenação de string

Item  Cuidado com o desempenho da concatenação de string

以上是項目 注意字串連接效能的詳細內容。更多資訊請關注PHP中文網其他相關文章!

陳述:
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn