0 added
0 removed
Original
2026-01-01
Modified
2026-02-26
1
<p>Генерация строк в циклах - задача, часто возникающая на практике. Типичный пример - метод, помогающий генерировать HTML-списки. Он принимает на вход массив элементов и возвращает HTML-список из них:</p>
1
<p>Генерация строк в циклах - задача, часто возникающая на практике. Типичный пример - метод, помогающий генерировать HTML-списки. Он принимает на вход массив элементов и возвращает HTML-список из них:</p>
2
<p>Как можно решить эту задачу "в лоб":</p>
2
<p>Как можно решить эту задачу "в лоб":</p>
3
<ol><li>Создать переменную result и записать в нее <ul>.</li>
3
<ol><li>Создать переменную result и записать в нее <ul>.</li>
4
<li>Пройтись циклом по элементам коллекции и дописать в результирующую строку очередной элемент <li>.</li>
4
<li>Пройтись циклом по элементам коллекции и дописать в результирующую строку очередной элемент <li>.</li>
5
<li>Добавить в конце </ul> и вернуть result из функции.</li>
5
<li>Добавить в конце </ul> и вернуть result из функции.</li>
6
</ol><p>Такой способ вполне рабочий, но для большинства языков программирования максимально неэффективный. Дело в том, что конкатенация порождает новую строчку вместо старой, - и подобная ситуация повторяется на каждой итерации. Причем строка становится все больше и больше. Копирование строк приводит к серьезному расходу памяти и влияет на производительность.</p>
6
</ol><p>Такой способ вполне рабочий, но для большинства языков программирования максимально неэффективный. Дело в том, что конкатенация порождает новую строчку вместо старой, - и подобная ситуация повторяется на каждой итерации. Причем строка становится все больше и больше. Копирование строк приводит к серьезному расходу памяти и влияет на производительность.</p>
7
<p>Правильный способ для динамической сборки строк в Java - использование класса StringBuilder. Он позволяет собирать строку по кусочкам без лишнего копирования. Перепишем наш пример:</p>
7
<p>Правильный способ для динамической сборки строк в Java - использование класса StringBuilder. Он позволяет собирать строку по кусочкам без лишнего копирования. Перепишем наш пример:</p>
8
<p>Размер кода практически не изменился, но способ формирования результата стал другим. Вместо перезаписи строки, создается объект, который "накапливает" внутри себя части новой строки. Затем этот объект превращается в строку с помощью метода toString().</p>
8
<p>Размер кода практически не изменился, но способ формирования результата стал другим. Вместо перезаписи строки, создается объект, который "накапливает" внутри себя части новой строки. Затем этот объект превращается в строку с помощью метода toString().</p>
9
<h2>Рекомендуемые программы</h2>
9
<h2>Рекомендуемые программы</h2>