StringBuilder vs String ( JAVA )

Iniciado por + 1 Oculto(s), 12 Junio 2016, 23:48 PM

0 Miembros y 1 Visitante están viendo este tema.

+ 1 Oculto(s)

por que cuando utilizo StringBuilder el tiempo de ejecucion disminuye respecto al utilizar String

alguna explicacion?

AlbertoBSD

#1
Dados los Siguientes codigos:

Código (java) [Seleccionar]
String result = "";
for (String s : hugeArray) {
   result = result + s;
}


y
Código (java) [Seleccionar]

StringBuilder sb = new StringBuilder();
for (String s : hugeArray) {
   sb.append(s);
}
String result = sb.toString();


con hugeArray con miles de strings.

el StringBuilder ya es un contendedor en si y solo tiene que anexar los strings al buffer interno ya existente y String tiene que generar N veces nuevas  instancias de String  en cada concatenation resultando mas costoso en tiempo de cpu y memoria.

Fuente:

http://stackoverflow.com/questions/1532461/stringbuilder-vs-string-concatenation-in-tostring-in-java

Saludos
Donaciones
1Coffee1jV4gB5gaXfHgSHDz9xx9QSECVW

+ 1 Oculto(s)

entonces StringBuilder es un contenedor

en que casos usar String y en que casos usar String builder?

AlbertoBSD

#3
Segun la pagina

https://docs.oracle.com/javase/7/docs/api/java/lang/StringBuilder.html

CitarA mutable sequence of characters. This class provides an API compatible with StringBuffer, but with no guarantee of synchronization. This class is designed for use as a drop-in replacement for StringBuffer in places where the string buffer was being used by a single thread (as is generally the case).

StringBuilder es un constructor de Cadenas su nombre lo dice y es parecido a StringBuffer

String lo usas cuando ya tienes la cadena construida y va a tener minimas o ninguna modificacion (Almacenar datos finales) y StringBuilder lo usas cuando sabes que vas a realizar varias concatenaciones a una misma cadena y al final lo puedes pasar a String.

Saludos
Donaciones
1Coffee1jV4gB5gaXfHgSHDz9xx9QSECVW

hectornunezrivas

Buenas noches amigo.
Los métodos de StringBuilder no son sincronizados, por lo que tiene mejor rendimiento que StringBuffer. En general, la concatenación de String ocurre con variables locales a un método, por lo que es seguro usar StringBuilder en lugar de StringBuffer. En métodos que hacen uso intensivo de la concatenación, la diferente en rendimiento puede ser importante.

StringBuilder se usa de la siguiente manera:

StringBuilder holamundoBuilder = new StringBuilder();
holamundoBuilder.append("Hola, ");
holamundoBuilder.append("mundo");

String holamundo = holamundoBuilder.toString();

Espero y te sea util