Progress28.ru

IT Новости


09ae9cb0
1 просмотров
Рейтинг статьи
1 звезда2 звезды3 звезды4 звезды5 звезд
Загрузка...

Stringbuilder append java

Классы StringBuffer и StringBuilder

Класс String представляет собой неизменяемые последовательности символов постоянной длины и частое использование объектов класса занимают много места в памяти. Класс StringBuffer представляет расширяемые и доступные для изменений последовательности символов, позволяя вставлять символы и подстроки в существующую строку и в любом месте. Данный класс гораздо экономичнее в плане потребления памяти и настоятельно рекомендуется к использованию.

Существует четыре конструктора класса:

  1. StringBuffer() — резервирует место под 16 символов без перераспределения памяти
  2. StringBuffer(int capacity) — явно устанавливает размер буфера
  3. StringBuffer(String string) — устанавливает начальное содержимое и резервирует 16 символов без повторого резервирования
  4. StringBuffer(CharSequence cs) — создаёт объект, содержащий последовательность символов и резервирует место ещё под 16 символов

Методы класса StringBuffer

length()

Метод позволяет получить текущую длину объекта.

capacity()

Метод позволяет получить текущий объём выделенной памяти.

Обратите внимание, что хотя слово состоит из четырёх символов, в памяти выделено запасное пространство для дополнительных 16 символов. Для такой простейшей операции выигрыша нет, но в сложных примерах, когда приходится на лету соединять множество строк, производительность резко возрастает.

ensureCapacity()

Можно предварительно выделить место для определённого количества символов, если собираетесь добавлять большое количество маленьких строк.

setLength(int length)

Устанавливает длину строки. Значение должно быть неотрицательным.

charAt(int index) и setCharAt(int index, char ch)

Можно извлечь значение отдельного символа с помощью метода charAt() и установить новое значение символа с помощью метода setCharAt(), указав индекс символа и его значение.

getChars()

Позволяет скопировать подстроку из объекта класса StringBuffer в массив. Необходимо позаботиться, чтобы массив был достаточного размера для приёма нужного количества символов указанной подстроки.

append()

Метод соединяет представление любого другого типа данных. Есть несколько перегруженных версий.

Строковое представление каждого параметра за кулисами получают через метод String.valueOf() и затем полученные строки склеиваются в итоговую строку.

insert()

Вставляет одну строку в другую. Также можно вставлять значения других типов, которые будут автоматически преобразованы в строки. Вам надо указать индекс позиции, куда будет вставляться строка.

reverse()

Позволяет изменить порядок символов на обратный.

У меня получилось практически то же самое, может метод глючит?

delete() и deleteCharAt()

Метод delete() удаляет последовательность символов, вам надо задать индекс первого символа, который надо удалить, а также индекс символа, следующего за последним из удаляемых. Метод deleteCharAt() удаляет один символ из указанной позиции.

replace()

Позволяет заменить один набор символов на другой. Нужно указать начальный и конечный индекс и строку замены.

substring()

Позволяет получить часть содержимого. Есть две формы метода. В первом случае нужно указать индекс начала позиции, с которой нужно получить подстроку. Во втором варианте указывается начальный индекс и конечный индекс, если нужно получить текст из середины строки.

Есть и другие методы

StringBuilder

Класс StringBuilder идентичен классу StringBuffer и обладает большей производительностью. Однако он не синхронизирован, поэтому его не нужно использовать в тех случаях, когда к изменяемой строке обращаются несколько потоков.

Создадим новый объект.

Добавляем новый фрагмент в существующую строку:

Соединять строки можно цепочкой.

Данный код работает чуть быстрее, чем вызов append() по отдельности. Но это будет заметно при очень больших объёмах.

Читать еще:  Ошибка reboot and select proper boot

Класс StringBuilder в Java с примерами

StringBuilder в Java представляет собой изменяемую последовательность символов. Поскольку класс String в Java создает неизменяемую последовательность символов, класс StringBuilder предоставляет альтернативу классу String , поскольку он создает изменяемую последовательность символов. Функция StringBuilder очень похожа на класс StringBuffer , поскольку оба они предоставляют альтернативу классу String , создавая изменяемую последовательность символов. Однако класс StringBuilder отличается от класса StringBuffer на основе синхронизации. Класс StringBuilder не гарантирует синхронизацию, а класс StringBuffer — нет. Поэтому этот класс предназначен для использования в качестве вставной замены для StringBuffer в местах, где StringBuffer использовался одним потоком (как это обычно бывает). Там, где это возможно, рекомендуется использовать этот класс вместо StringBuffer, так как он будет быстрее в большинстве реализаций. Экземпляры StringBuilder небезопасны для использования несколькими потоками. Если такая синхронизация необходима, рекомендуется использовать StringBuffer .

Конструкторы в Java StringBuilder:

  • StringBuilder (): создает построитель строк без символов и начальной емкостью 16 символов.
  • StringBuilder (intacity): создает построитель строк без символов и начальной емкости, указанной аргументом емкости.
  • StringBuilder (CharSequence seq): создает построитель строк, содержащий те же символы, что и указанный CharSequence.
  • StringBuilder (String str): создает построитель строк, инициализированный для содержимого указанной строки.

Ниже приведен пример программы для иллюстрации StringBuilder на Java:

// Java-код для иллюстрации StringBuilder

public class GFG1 <

public static void main(String[] argv)

// создаем объект StringBuilder

// конструктор usind StringBuilder ()

// создаем объект StringBuilder

// конструктор usind StringBuilder (CharSequence)

= new StringBuilder( «AAAABBBCCCC» );

// создаем объект StringBuilder

// конструктор usind StringBuilder (емкость)

= new StringBuilder( 10 );

System.out.println( «String2 capacity = «

// создаем объект StringBuilder

// конструктор usind StringBuilder (String)

Методы в Java StringBuilder:

  1. StringBuilder append (X x) : этот метод добавляет строковое представление аргумента типа X в последовательность.
  2. StringBuilder appendCodePoint (int codePoint) : этот метод добавляет строковое представление аргумента codePoint к этой последовательности.
  3. intacity () : этот метод возвращает текущую емкость.
  4. char charAt (int index) : этот метод возвращает значение char в этой последовательности по указанному индексу.
  5. IntStream chars () : этот метод возвращает поток значений int, расширяющих ноль, из этой последовательности.
  6. int codePointAt (int index) : этот метод возвращает символ (кодовая точка Unicode) по указанному индексу.
  7. int codePointBefore (int index) : этот метод возвращает символ (кодовая точка Unicode) перед указанным индексом.
  8. int codePointCount (int beginIndex, int endIndex) : Этот метод возвращает количество кодовых точек Unicode в указанном текстовом диапазоне этой последовательности.
  9. IntStream codePoints () : этот метод возвращает поток значений кодовой точки из этой последовательности.
  10. StringBuilder delete (int start, int end) : этот метод удаляет символы в подстроке этой последовательности.
  11. StringBuilder deleteCharAt (int index) : этот метод удаляет символ в указанной позиции в этой последовательности.
  12. void sureCapacity (intimumCapacity) : Этот метод гарантирует, что емкость по крайней мере равна указанному минимуму.
  13. void getChars (int srcBegin, int srcEnd, char [] dst, int dstBegin) : символы этого метода копируются из этой последовательности в массив символов назначения dst.
  14. int indexOf () : Этот метод возвращает индекс в этой строке первого вхождения указанной подстроки.
  15. StringBuilder insert (int offset, boolean b) : этот метод вставляет строковое представление аргумента booalternatelean в эту последовательность.
  16. StringBuilder insert () : этот метод вставляет строковое представление аргумента char в эту последовательность.
  17. int lastIndexOf () : Этот метод возвращает индекс в этой строке последнего вхождения указанной подстроки.
  18. int length () : этот метод возвращает длину (количество символов).
  19. int offsetByCodePoints (int index, int codePointOffset) : этот метод возвращает индекс в этой последовательности, который смещен от данного индекса на кодовые точки codePointOffset.
  20. StringBuilder replace (int start, int end, String str) : этот метод заменяет символы в подстроке этой последовательности на символы в указанной строке.
  21. StringBuilder reverse () : Этот метод вызывает замену этой последовательности символов на обратную.
  22. void setCharAt (int index, char ch) : в этом методе символ по указанному индексу устанавливается в ch.
  23. void setLength (int newLength) : Этот метод устанавливает длину последовательности символов.
  24. CharSequence subSequence (int start, int end) : Этот метод возвращает новую последовательность символов, которая является подпоследовательностью этой последовательности.
  25. String substring () : этот метод возвращает новую строку, содержащую подпоследовательность символов, которая в настоящее время содержится в этой последовательности символов.
  26. String toString () : этот метод возвращает строку, представляющую данные в этой последовательности.
  27. void trimToSize () : этот метод пытается уменьшить объем памяти, используемой для последовательности символов.
Читать еще:  Java get current directory

// Java-код для иллюстрации
// методы StringBuilder

ez code

Просто о сложном.

Управление строками, функции для работы со строками в Java. Часть 2

Продолжаем изучение строк в Java. Основы работы со строками можно посмотреть в уроке «Строки в Java».

Методы для сравнения строк

Класс String содержит методы для сравнения строк и частей строк. Следующая таблица описывает эти методы:

МетодОписание
boolean endsWith(String suffix)
boolean startsWith(String prefix)
Возвращает true Если строка заканчивается или начинается с указанной подстроки.
boolean startsWith(String prefix, int offset)Возвращается true если переданная строка входит в исходную начиная с индекса offset.
int compareTo(String anotherString)Сравнивает строки лексикографически. Возвращает int:> 0, если строка болше переданной в параметре, = 0, если равны и StringBuilder отличаются от объектов типа String тем, что они могут быть изменены. По сути они представляют из себя массивы переменной длины, содержащие последовательность символов. Длина и содержание последовательности могут быть изменены вызовом соответствующих методов.

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

Length и Capacity

Класс StringBuilder как и класс String , имеет метод length(), который возвращает длину последовательности символов объекта.

В отличие от строк, в StringBuilder, помимо длины есть capacity — количество символов под которое выделена память. Емкость (capacity), возвращаемая методом capacity() , всегда больше или равна длине строки (обычно больше) и автоматически будет увеличина при необходимости.

StringBuilder()
Создает пустой stringbuilder, с емкостью 16 символов.
StringBuilder(CharSequence cs)Создает stringbuilder, содержащий заданную последовательность символов плюс дополнительно 16 пустых символов.
StringBuilder(int initCapacity)Создает stringbuilder определенной емкости.
StringBuilder(String s)Создет stringbuilder с заданной строкой.

Например, следующий код:

создаст string builder длиной 9 символов и емкостью 16:

StringBuilder Java

Класс StringBuilder содержит несколько методов относящихся к длине и емкости, которых нет в классе String :

Length и Capacity функции

ФункцияОписание
void setLength(int newLength)Задает длину последовательности символов. Если newLength меньше length() , последние символы будут отсечены. Если newLength больше length() , будут добавлены null-символы в конец последовательности.
void ensureCapacity(int minCapacity)Гарантирует, что емкость будет не меньше указанного минимума.

Некоторые операции (например, append() , insert() , или setLength() ) могут увеличить длину последовательности символов в stringbuilder’е , так что длина может оказаться больше текущей емкости. Когда это происходит — емкость автоматически увеличивается.

Функции StringBuilder

Основные функции StringBuilder , которых нет в String : append() и insert() , которые перегружены для приема разного типа данных. Каждый конвертирует аргумент в строку и добавляет её в строку stringbuilder’а. Метод append всегда добавляет символы в конец существующей последовательности, тогда как метод insert добавляет символы в указанное место.

Некоторые методы класса StringBuilder .

StringBuilder

ФункцияОписание
StringBuilder append(boolean b)
StringBuilder append(char c)
StringBuilder append(char[] str)
StringBuilder append(char[] str, int offset, int len)
StringBuilder append(double d)
StringBuilder append(float f)
StringBuilder append(int i)
StringBuilder append(long lng)
StringBuilder append(Object obj)
StringBuilder append(String s)
Добавляет аргумент в конец строки stringbuilder’а. Предварительно данные конвертируются в строку.
StringBuilder delete(int start, int end)
StringBuilder deleteCharAt(int index)
Первый метод удаляет подпоследовательность начиная с from до end-1 (включительно) в последовательности символов StringBuilder ‘а. Второй — удаляет символ, индекс которого равен index .
StringBuilder insert(int offset, boolean b)
StringBuilder insert(int offset, char c)
StringBuilder insert(int offset, char[] str)
StringBuilder insert(int index, char[] str, int offset, int len)
StringBuilder insert(int offset, double d)
StringBuilder insert(int offset, float f)
StringBuilder insert(int offset, int i)
StringBuilder insert(int offset, long lng)
StringBuilder insert(int offset, Object obj)
StringBuilder insert(int offset, String s)
Вставляет второй аргумент в stringbuilder. Первый аргумент задает позицию символа перед которым будет вставлены данные. Перед вставкой данные конвертируются в строку.
StringBuilder replace(int start, int end, String s)
void setCharAt(int index, char c)
Заменяет заданные символы в строке.
StringBuilder reverse()Переворачивает строку в stringbuilder’е.
String toString()Возвращает строку, которая хранится в билдере.

Вы можете использовать любой метод класса String на объекте класса StringBuilder предварительно сконвертировав его в строку методом toString() . Затем из строки можно опять сделать stringbuilder, используя конструктор: StringBuilder(String str) .

Пример

Программа StringDemo, которую мы рассматривали в предыдущих уроках Java — пример того, когда использование StringBuilder вместо String делает программу проще.

StringDemo переворачивает палиндром:

Для того чтобы перевернуть сроку программа сначала конвертирует строку в массив символов (первый цикл), далее переворачивает массив и обратно конвертирует массив в строку.

Если вы конвертируете строку palindrome в stringbuilder, вы сможете использовать метод reverse() класса StringBuilder . Код станет чище и проще читаемым:

Обратите внимание, что в функцию println() мы передаем StringBuilder:

Ссылка на основную публикацию
×
×