A diferencia de la clase estándar String,
StringBuilder
permite trabajar con cadenas de caracteres modificables.
El siguiente ejemplo muestra dos métodos para
construir un objeto que un listado de N números separados por comas.
public class UsandoStringBuilder {
private static String metodo1(int n) {
String resultado = "";
for (int i = 0; i < n; i++) resultado+= i + ", ";
return resultado;
}
private static String metodo2(int n) {
StringBuilder buffer = new StringBuilder();
for (int i = 0; i < n; i++) buffer.append(i).append(",
");
return buffer.toString();
}
public static void main(String[] argumentos) { int n = Integer.parseInt(argumentos[0]); long t1, t2;
t1 = System.currentTimeMillis();
metodo1(n);
t2 = System.currentTimeMillis();
System.out.println("método 1: " + (t2 - t1) + "ms");
t1 = System.currentTimeMillis();
metodo2(n);
t2 = System.currentTimeMillis();
System.out.println("método 2: " + (t2 - t1) +
"ms");
} } |
La diferencia en tiempos de ejecución es notoria:
$ java UsandoStringBuilder 100
método 1: 16ms
método 2: 0ms
$ java UsandoStringBuilder 1000
método 1: 47ms
método 2: 0ms
$ java UsandoStringBuilder 10000
método 1: 13922ms
método 2: 0ms
El tiempo exacto que tarda en ejecutarse el
programa depende de cada ordenador y de qué más programas hay en ejecución en
un momento dado. Lo importante es la proporción de tiempos, que es claramente
favorable al uso de StringBuilder. La diferencia, inapreciable
cuando hay pocos objetos que manejar, se torna apabullante cuando el número de
objetos crece.
Temas relacionados