Допустим, я вызвал replaceAll () для большой строки, которая заменила 1000 совпадающих экземпляров. Означает ли это, что 1000 строк были созданы и переназначены в процессе из-за неизменности строки? Есть ли более быстрые альтернативы?
Если вы покопаетесь в String , вы увидите, что он делегирует replaceAll () для Pattern & Matcher и Matcher. replaceAll () использует StringBuilder для хранения возвращаемого значения.
Так что нет, String.replaceAll () не создает более небольшого количества объектов.
вы можете попробовать с StringBuffer / StringBuilder , так как они изменяемые CharSequence s:
CharSequence veryBigString = new StringBuilder(); Pattern.compile(regex).matcher(veryBigString).replaceAll(replacement);