A diferencia de la clase estándar String,
StringBuffer permite trabajar con cadenas de caracteres modificables.
Ver también “StringBuilder”,
que es más rápida.
El siguiente ejemplo muestra dos métodos para
construir un objeto que un listado de N números separados por comas.
public class UsandoStringBuffer {
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) {
StringBuffer buffer = new StringBuffer();
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 UsandoStringBuffer 100
método 1: 0ms
método 2: 0ms
$ java UsandoStringBuffer 1000
método 1: 47ms
método 2: 0ms
$ java UsandoStringBuffer 10000
método 1: 17218ms
método 2: 16ms
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 StringBuffer. La diferencia, inapreciable
cuando hay pocos objetos que manejar, se torna apabullante cuando el número de
objetos crece.
Ver “StringBuilder”:
similar; pero más rápida.
Temas relacionados