Определение объема StringBuilder внутри цикла for - PullRequest
0 голосов
/ 14 апреля 2010

Когда вы захотите использовать String Builder внутри цикла for?

Пример кода:

....
for (int i=0; i<cnt; i++) {
    ....
    {
        StringBuilder sb = new StringBuilder();
        sb.append(",");
        ....
    }
}
....

Ответы [ 3 ]

2 голосов
/ 14 апреля 2010

Ну, кроме небольшого запаха кода при создании новых объектов внутри цикла, я мог видеть, что вы создаете StringBuilder внутри цикла for для генерации длинной строки для каждого элемента в цикле for.

Однако вы можете также ограничить его за пределами цикла for и очищать его при каждом проходе. Зависит от того, как вы думаете, было бы легче читать.

0 голосов
/ 14 апреля 2010

Если код, следующий за внутренним циклом, выполняет что-то, требующее большого объема памяти, и StringBuilder во внутреннем цикле также велик, то вы можете захотеть, чтобы он был локально ограничен, чтобы освободить ГХ для освобождения память потом. В противном случае я согласен с JBristow, что он должен выходить за пределы цикла и очищаться (и, возможно, trimToSize () 'd) в начале внутреннего цикла.

0 голосов
/ 14 апреля 2010

Если вы делали это в сочетании с другим внешним StringBuilder.

StringBuilder sbAll = new StringBuilder();
for (int i=0; i<cnt; i++) {
    ....
    {
        StringBuilder sb = new StringBuilder();
        sb.append(",");
        sbAll.append(sb.toString());
    }
}

Вопрос в том, что вы делаете в цикле, который достаточно симпатичен, чтобы иметь отдельный StringBuilder? Я думаю, это возможно.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...