1. Verkettung von Strings mit dem Operator ( ):
Die Verwendung des Operators zum Verketten von Zeichenfolgen ist für einige Verkettungen praktisch, führt jedoch aufgrund der Unveränderlichkeit von Zeichenfolgen zu Leistungsproblemen bei umfangreichen Vorgängen.
Jedes Mal, wenn eine neue Zeichenfolge erstellt wird, wird der Inhalt aller vorherigen Zeichenfolgen kopiert, was bei großen Verkettungen zu einer quadratischen Zeit führt.
Falsches Beispiel (wiederholte Verkettung mit ):
public String criaFatura(List- itens) { String fatura = ""; for (Item item : itens) { fatura = item.toString(); // ineficiente para grandes listas } return fatura; }
2. Mit StringBuilder die Leistung verbessern:
Verwenden Sie anstelle von StringBuilder, mit dem Sie Zeichenfolgen effizient ändern und nach Bedarf dynamisch Speicher zuweisen können.
Die Verkettungszeit mit StringBuilder ist linear, was die Leistung erheblich verbessert.
Richtiges Beispiel (Verwendung von 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. Leistungsvergleich:
Selbst nach Verbesserungen in Java 6 zur Optimierung des Operators ist die Verwendung von StringBuilder weiterhin effizienter. Auf einer Testmaschine war die Verwendung von StringBuilder 6,5-mal schneller als der Bediener in einem Szenario mit 100 Elementen.
Beispiel für eine Optimierung ohne Vorbelegung:
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. Die Moral der Geschichte:
Verwenden Sie es nicht, um viele Zeichenfolgen zu verketten. Mit zunehmender Anzahl an Verkettungen wird die Leistung schnell inakzeptabel.
Verwenden Sie StringBuilder.append oder Alternativen wie Zeichenarrays für große Mengen an Verkettungen.
5. Andere Alternativen:
Zusätzlich zu StringBuilder können Sie die Verwendung von Zeichenarrays für umfangreiche Verarbeitung oder zum effizienteren Kombinieren von Zeichenfolgen in Betracht ziehen, insbesondere wenn eine genauere Kontrolle der Leistung erforderlich ist.
Abschluss:
Verwenden Sie StringBuilder, um Zeichenfolgen effizient zu verketten.
Vermeiden Sie die Verwendung des Operators in Schleifen oder für große Mengen an Zeichenfolgen, da die Leistung mit zunehmender Anzahl von Verkettungen erheblich abnimmt.
Beispiele aus dem Buch:
Haftungsausschluss: Alle bereitgestellten Ressourcen stammen teilweise aus dem Internet. Wenn eine Verletzung Ihres Urheberrechts oder anderer Rechte und Interessen vorliegt, erläutern Sie bitte die detaillierten Gründe und legen Sie einen Nachweis des Urheberrechts oder Ihrer Rechte und Interessen vor und senden Sie ihn dann an die E-Mail-Adresse: [email protected] Wir werden die Angelegenheit so schnell wie möglich für Sie erledigen.
Copyright© 2022 湘ICP备2022001581号-3