2009-08-09 2 views

Répondre

13

Si vous creusez dans String, vous verrez qu'il délègue replaceAll() à Pattern & Matcheret Matcher.replaceAll() utilise un StringBuilder pour stocker la valeur retournée par la suite.

Donc non, String.replaceAll() ne crée pas plus d'un petit nombre d'objets.

+0

Gardez à l'esprit que la création d'un nouveau modèle peut être coûteux. Selon la fréquence à laquelle il est appelé, il peut être plus efficace de créer le motif une fois et d'en créer un. Comme toujours, le profilage de votre application vous indiquera si cela est nécessaire ou une optimisation prématurée. – AngerClown

-1

vous pouvez essayer avec un StringBuffer/StringBuilder, car ils sont mutablesCharSequence s:

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

Peu importe si 'veryBigString' est mutable; 'replaceAll()' créera toujours un nouveau StringBuffer pour faire le travail, et retournera le résultat en tant que nouvelle chaîne. Était-ce votre argument? –

Questions connexes