Java: Массивы
Теория: StringBuilder
Генерация строк в циклах — задача, часто возникающая на практике. Типичный пример — метод, помогающий генерировать HTML-списки. Он принимает на вход массив элементов и возвращает HTML-список из них:
Как можно решить эту задачу "в лоб":
- Создать переменную
resultи записать в нее<ul>. - Пройтись циклом по элементам коллекции и дописать в результирующую строку очередной элемент
<li>. - Добавить в конце
</ul>и вернутьresultиз функции.
Такой способ вполне рабочий, но для большинства языков программирования максимально неэффективный. Дело в том, что конкатенация порождает новую строчку вместо старой, — и подобная ситуация повторяется на каждой итерации. Причем строка становится все больше и больше. Копирование строк приводит к серьезному расходу памяти и влияет на производительность.
Правильный способ для динамической сборки строк в Java - использование класса StringBuilder. Он позволяет собирать строку по кусочкам без лишнего копирования. Перепишем наш пример:
Размер кода практически не изменился, но способ формирования результата стал другим. Вместо перезаписи строки, создается объект, который "накапливает" внутри себя части новой строки. Затем этот объект превращается в строку с помощью метода toString().
Рекомендуемые программы
Завершено
0 / 16


