38.    StringBuilder (clase) java.lang.StringBuilder

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

Las Bibliotecas de Java