Производительность string.replaceAll () страдает от неизменности строк? - PullRequest
6 голосов
/ 09 августа 2009

Допустим, я вызвал replaceAll () для большой строки, которая заменила 1000 совпадающих экземпляров. Означает ли это, что 1000 строк были созданы и переназначены в процессе из-за неизменности строки? Есть ли более быстрые альтернативы?

Ответы [ 2 ]

13 голосов
/ 09 августа 2009

Если вы покопаетесь в String , вы увидите, что он делегирует replaceAll () для Pattern & Matcher и Matcher. replaceAll () использует StringBuilder для хранения возвращаемого значения.

Так что нет, String.replaceAll () не создает более небольшого количества объектов.

0 голосов
/ 09 августа 2009

вы можете попробовать с StringBuffer / StringBuilder , так как они изменяемые CharSequence s:

CharSequence veryBigString = new StringBuilder();
Pattern.compile(regex).matcher(veryBigString).replaceAll(replacement);
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...