Есть ли в scala подстрока прокси? - PullRequest
1 голос
/ 16 сентября 2011

Использование строк в качестве объектов String довольно удобно для многих задач обработки строк.

Мне нужно извлечь некоторые подстроки для обработки, и класс Scala String предоставляет мне такую ​​функциональность. Но это довольно дорого: новый объект String создается каждый раз, когда используется функция подстроки. Использование кортежей (string: String, start: Int, stop: Int) решает проблему производительности, но усложняет код.

Существует ли какая-либо библиотека для создания строковых прокси, которая хранит исходную строку, границы диапазона и совместима с другими строковыми функциями?

Ответы [ 2 ]

10 голосов
/ 16 сентября 2011

Java 7u6 и более поздних версий теперь реализуют #substring как копию, а не как представление, что делает этот ответ устаревшим.


Если вы запускаете свою программу Scala на Sun / Oracle JVM, вам не нужно выполнять эту оптимизацию, потому что java.lang.String уже делает это за вас.

Строка сохраняется как ссылка на массив char вместе со смещением и длиной. Подстроки совместно используют один и тот же базовый массив, но с другим смещением и / или длиной.

5 голосов
/ 16 сентября 2011

Посмотрите на реализацию String (в частности, substring(int beginIndex, int endIndex)): она уже представлена ​​как вы хотите.

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