A partire dalla JDK 1.5, Java dispone nel package di base (java.lang) la classe StringBuilder che va a sostituire e migliorare le prestazioni della precedente StringBuffer. La novità sta nella mancanza di protezione Threadsafe, aumentando notevolmente i tempi di risposta nella costruzione di stringhe. Per quanto riguarda l'utilizzo di memoria, invece le due classi si equiparano.

Dov'è importante l'utilizzo di questa classe? Per rispondere dobbiamo portare alla mente un caso semplice di programma, eseguibile con la semplice classe String:

String r = "";
for (int i = 0; i < 1000; i++){
   r += i;
}

Niente di più semplice. Dobbiamo però considerare che l'operatore di concatenazione e assegnazione non appende il carattere alla stringa di partenza, ma parte il costruttore di una nuova stringa che andrà a sostituire quella precedente che rimarrà sospesa in memoria in attesa dell'intervento del Garbage Collector. Queste operazioni sono dispendiose in termini di tempo e spazio, allocando e deallocando in continuazione memoria. Attraverso StringBuilder (o StringBuffer) possiamo appendere stringhe senza il problema della deallocaziione continua , mentre lo spazio allocato non sarà altro che quello richiesto, oltre alla copia finale che verrà proposta, trasformandola in stringa.

StringBuilder sb = new StringBuilder("");

for (int i = 0; i < 1000; i++){
   sb.append(i);
}

String x = sb.toString();

Producendo lo stesso risultato, ma azzerando praticamente il tempo di risposta del programma.

 

 
© 2014 • Rudylab
Questo blog non rappresenta una testata giornalistica, in quanto viene aggiornato senza alcuna periodicità. Non può, pertanto, considerarsi un prodotto editoriale, ai sensi della legge n. 62 del 7/03/2001.