1. Concatenation of Strings with the operator ( ):
Using the operator to concatenate strings is convenient for a few concatenations, but presents performance issues for large-scale operations due to the immutability of strings.
Each time a new string is created, the contents of all previous strings are copied, resulting in a quadratic time for large concatenations.
Incorrect example (repeated concatenation with ):
public String criaFatura(List- itens) { String fatura = ""; for (Item item : itens) { fatura = item.toString(); // ineficiente para grandes listas } return fatura; }
2. Using StringBuilder to improve performance:
Instead of using , use StringBuilder, which allows you to modify strings efficiently, dynamically allocating memory as needed.
The concatenation time with StringBuilder is linear, which significantly improves performance.
Correct example (use of 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. Performance comparison:
Even after improvements in Java 6 to optimize the operator, using StringBuilder continues to be more efficient. On a test machine, using StringBuilder was 6.5 times faster than the operator in a scenario with 100 items.
Example of optimization without pre-allocation:
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. The moral of the story:
Don't use it to concatenate many strings. Performance quickly becomes unacceptable as the number of concatenations grows.
Use StringBuilder.append or alternatives like character arrays for large volumes of concatenations.
5. Other alternatives:
In addition to StringBuilder, you might consider using character arrays for large-scale processing or to combine strings more efficiently, especially when finer control over performance is needed.
Conclusion:
Use StringBuilder to efficiently concatenate strings.
Avoid using the operator in loops or for large volumes of strings, as performance degrades significantly as the number of concatenations increases.
Examples from the book:
Disclaimer: All resources provided are partly from the Internet. If there is any infringement of your copyright or other rights and interests, please explain the detailed reasons and provide proof of copyright or rights and interests and then send it to the email: [email protected] We will handle it for you as soon as possible.
Copyright© 2022 湘ICP备2022001581号-3