2009-08-09 8 views

risposta

13

Se si scava nel String, vedrete che i delegati replaceAll() per Pattern & Matchere Matcher.replaceAll() utilizza uno StringBuilder per memorizzare il valore eventualmente restituito.

Quindi no, String.replaceAll() non crea più di un piccolo numero di oggetti.

+0

tenere a mente che la creazione di un nuovo modello può essere costoso. A seconda della frequenza con cui viene chiamato, può essere più efficiente creare il Pattern una volta e creare un Matcher da questo. Come sempre, la profilatura della tua app ti dirà se è necessario o un'ottimizzazione prematura. – AngerClown

-1

si può provare con un StringBuffer/StringBuilder, dal momento che sono mutabili CharSequence s:

CharSequence veryBigString = new StringBuilder(); 
Pattern.compile(regex).matcher(veryBigString).replaceAll(replacement); 
+1

Non importa se 'veryBigString' è modificabile; 'replaceAll()' creerà comunque un nuovo StringBuffer per eseguire il lavoro e restituirà il risultato come una nuova String. Era questo il tuo punto? –

Problemi correlati