Java: Массивы
2026-02-26 16:56 Diff

Генерация строк в циклах — задача, часто возникающая на практике. Типичный пример — метод, помогающий генерировать HTML-списки. Он принимает на вход массив элементов и возвращает HTML-список из них:

Как можно решить эту задачу "в лоб":

  1. Создать переменную result и записать в нее <ul>.
  2. Пройтись циклом по элементам коллекции и дописать в результирующую строку очередной элемент <li>.
  3. Добавить в конце </ul> и вернуть result из функции.

Такой способ вполне рабочий, но для большинства языков программирования максимально неэффективный. Дело в том, что конкатенация порождает новую строчку вместо старой, — и подобная ситуация повторяется на каждой итерации. Причем строка становится все больше и больше. Копирование строк приводит к серьезному расходу памяти и влияет на производительность.

Правильный способ для динамической сборки строк в Java - использование класса StringBuilder. Он позволяет собирать строку по кусочкам без лишнего копирования. Перепишем наш пример:

Размер кода практически не изменился, но способ формирования результата стал другим. Вместо перезаписи строки, создается объект, который "накапливает" внутри себя части новой строки. Затем этот объект превращается в строку с помощью метода toString().

Рекомендуемые программы