Внесение изменений в строку в Java - наилучший подход

1

В поисках лучшей практики Java для решения следующей проблемы.
У меня есть (относительно) длинная строка и набор (неперекрывающихся) изменений, чтобы сделать это - допустим, что изменения имеют подпись:

change(int startIndex, int endIndex, String replacement); 

и примером будет

assert doChange("aaa",new Change(1,2,"hello")).equals("aHelloa");

Мой план состоит в том, чтобы работать назад (так что меняются индексы), хотя строка разбивается на три точки каждый раз и затем сшивается в замене. Но я могу себе представить, что это имеет гораздо более эффективный /java-подобный подход... есть ли API-вызов, который я пропустил?

Показать ещё 1 комментарий
Теги:
string
replace

1 ответ

1
Лучший ответ

Стандартная строка Java неизменна, что делает ее непригодной для расширенных операций на основе строк. Но есть также классы StringBuffer и StringBuilder, которые представляют собой изменяемую строку, предназначенную для манипулирования. У них даже есть собственный метод replace(start, end, str) который делает именно то, что вы пытаетесь сделать.

Основное различие между этими двумя классами заключается в том, что StringBuffer является потокобезопасным, а StringBuilder - нет. Если у вас нет нескольких потоков, обращающихся к одной и той же строке, используйте StringBuilder, потому что он обычно работает быстрее.

  • 1
    Примечание. StringBuilder почти всегда является лучшим выбором, чем StringBuffer - по сути, он работает одинаково, за исключением того, что StringBuffer синхронизирован и, следовательно, требует снижения производительности ... если вы не выполняете параллельные операции над StringBuffer из нескольких потоков, тогда StringBuilder лучше
  • 0
    Потоковая безопасность StringBuffer переоценена ...

Ещё вопросы

Сообщество Overcoder
Наверх
Меню