Cuándo usar StringBuilder en Java [duplicado]

Resuelto kostja asked hace 13 años • 9 respuestas

En general, se supone que es preferible utilizar a StringBuilderpara la concatenación de cadenas en Java. Este es siempre el caso?

Lo que quiero decir es esto: ¿La sobrecarga de crear un StringBuilderobjeto, llamar al append()método y finalmente toString()ya es menor que concatenar cadenas existentes con el +operador para dos cadenas, o solo es recomendable para más (de dos) cadenas?

Si existe tal umbral, ¿de qué depende (quizás de la longitud de la cadena, pero de qué manera)?

Y finalmente, ¿cambiaría la legibilidad y concisión de la +concatenación por el desempeño de StringBuilderen casos más pequeños como dos, tres o cuatro cadenas?

El uso explícito de StringBuilderpara concatenaciones regulares se menciona como obsoleto en Consejos obsoletos de optimización de Java así como en Mitos urbanos de Java .

kostja avatar Jan 10 '11 15:01 kostja
Aceptado

Si usas la concatenación de cadenas en un bucle, algo como esto,

String s = "";
for (int i = 0; i < 100; i++) {
    s += ", " + i;
}

entonces deberías usar a StringBuilder(not StringBuffer) en lugar de a String, porque es mucho más rápido y consume menos memoria.

Si tienes una sola declaración,

String s = "1, " + "2, " + "3, " + "4, " ...;

entonces puedes usar Strings, porque el compilador lo usará StringBuilderautomáticamente.

Ralph avatar Jan 10 '2011 09:01 Ralph

La respuesta de Ralph es fabulosa. Preferiría usar la clase StringBuilder para construir/decorar String porque su uso se parece más al patrón Builder.

public String decorateTheString(String orgStr){
            StringBuilder builder = new StringBuilder();
            builder.append(orgStr);
            builder.deleteCharAt(orgStr.length()-1);
            builder.insert(0,builder.hashCode());
            return builder.toString();
}

Se puede utilizar como ayudante/constructor para construir la cadena, no la cadena en sí.

zawhtut avatar Jan 10 '2011 09:01 zawhtut