1。使用運算子 ( ) 連接字串:
使用運算子連接字串對於少量連接來說很方便,但由於字串的不變性,在大規模操作時會出現效能問題。
每次建立新字串時,都會複製所有先前字串的內容,從而導致大型連接的時間成二次方。
不正確的例子(與 重複連接):
public String criaFatura(List- 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- 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- 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 高效連接字串。
避免在循環或大量字串中使用運算符,因為隨著連接數量的增加,效能會顯著下降。
書中的例子:
免責聲明: 提供的所有資源部分來自互聯網,如果有侵犯您的版權或其他權益,請說明詳細緣由並提供版權或權益證明然後發到郵箱:[email protected] 我們會在第一時間內為您處理。
Copyright© 2022 湘ICP备2022001581号-3