Я был очень удивлен, что не мог найти ответы на существующие вопросы.
Каков стандартный способ перебора всех символов в StringBuilder в Java?
Очевидный маршрут состоит в том, чтобы просто преобразовать его в String, а затем использовать toCharArray(). Проблема в том, что я имею дело с тысячами уникальных строк, с которыми я делаю много добавления, и я думаю, что у меня возникают проблемы с памятью и производительностью, из-за необходимости ставить их на работу.
EDIT: чтобы уточнить, я не вручную интернирую Strings, но я понял, что они были автоматически интернированы, и что если я toString
для StringBuilder, они будут интернированы. Возможно, я неправильно понял.
Во-первых, если вы интернируете много строк, вы делаете что-то очень не так.
В целом, StringBuilder
реализует CharSequence
, так же, как String
. Используйте обычный контурный цикл for
и charAt()
.
intern()
для встроенной строки. Но вы еще даже не создали объект String, вы можете сделать все это прямо из изменяемого Builder. 2. Да, charAt()
предоставляет O (1) доступ к базовому массиву
charAt()
методcharAt()
. Вы можете перебирать каждый символ, используя этот метод.