Стандартный способ перебора StringBuilder в Java?

1

Я был очень удивлен, что не мог найти ответы на существующие вопросы.

Каков стандартный способ перебора всех символов в StringBuilder в Java?

Очевидный маршрут состоит в том, чтобы просто преобразовать его в String, а затем использовать toCharArray(). Проблема в том, что я имею дело с тысячами уникальных строк, с которыми я делаю много добавления, и я думаю, что у меня возникают проблемы с памятью и производительностью, из-за необходимости ставить их на работу.

EDIT: чтобы уточнить, я не вручную интернирую Strings, но я понял, что они были автоматически интернированы, и что если я toString для StringBuilder, они будут интернированы. Возможно, я неправильно понял.

  • 2
    charAt() метод charAt() . Вы можете перебирать каждый символ, используя этот метод.
  • 1
    На что это будет похоже с точки зрения производительности? Предоставляет ли charAt () доступ O (1)?
Показать ещё 7 комментариев
Теги:
loops
iterator
stringbuilder

1 ответ

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

Во-первых, если вы интернируете много строк, вы делаете что-то очень не так.

В целом, StringBuilder реализует CharSequence, так же, как String. Используйте обычный контурный цикл for и charAt().

  • 0
    1. Как мне избежать интернирования строк? Я использую StringBuilder для почти всего, что я делаю, избегая строк везде, где могу. Можете ли вы рассказать о «чем-то очень-очень неправильном» и как этого избежать? 2. Предоставляет ли charAt () доступ O (1)?
  • 1
    @jmite 1. вы ничего не интернируете при использовании Builder. На самом деле, ничего не интернируется из встроенной строки, если вы явно не вызовете intern() для встроенной строки. Но вы еще даже не создали объект String, вы можете сделать все это прямо из изменяемого Builder. 2. Да, charAt() предоставляет O (1) доступ к базовому массиву
Показать ещё 1 комментарий

Ещё вопросы

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