lunedì 4 ottobre 2010

Svuotare uno StringBuffer o uno StringBuilder

A volte capita che tutto ciò che è stato inserito nel nostro buffer non ci serva più e vorremmo svuotarlo per poterlo riutilizzare nuovamente senza allocare nuove risorse.
Dal mio primo utilizzo ho considerato lo StringBuffer (e poi lo StringBuilder) degli oggetti molto simili ad una Collection ma specializzati nel contenere caratteri, l'unica differenza era l'assenza del metodo clear().
Io spesso faccio uso di tale metodo nelle Collection, l'allocazione di un nuovo oggetto porta via comunque dei cicli macchina, aggiungendo elementi abbiamo sicuramente aumentato le dimensioni del suo array interno (quindi di memoria e altri cicli macchina), poter riutilizzare la stessa istanza sarebbe l'ottimale.
Dopo moto girovagare, ho finalmete trovato la soluzione; ce l'avevo sotto il naso ma non l'avevo mai vista!

myStrBuffer.setLength(0);

Basta semplicemente impostare la lunghezza dell'oggetto a 0. Il puntatore interno viene spostato nella posizione iniziale dell'array, la lunghezza della stringa risulta 0 ma il buffer interno mantiene la sua dimensione attuale senza allocare nuove risorse.

Nessun commento:

Posta un commento