1. Модифициране на низове

В Java низовете са неизменни обекти. Това беше напequalsо, за да направи класа String силно оптимизиран и да позволи да се използва навсякъде. Например, само неизменни типове се препоръчват за използване като ключове в колекцията HashMap .

Въпреки това, често възникват ситуации, когато програмистите биха намерor за по-удобно класът Stringда бъде променлив. Те искат клас, който не създава нов подниз при всяко извикване на един от неговите методи.

Е, да предположим, че имаме много голям низ и трябва често да добавяме нещо към края му. В този случай дори колекция от знаци ( ArrayList<Character>) може да бъде по-ефективна от постоянното пресъздаване и свързване на String обекти.

Точно затова към езика Java беше добавен String-подобен тип, който може да се променя. Нарича се StringBuilder.

Създаване на обект

За да създадете StringBuilderобект въз основа на съществуващ низ, трябва да изпълните оператор като:

StringBuilder name = new StringBuilder(string);

За да създадете празен променлив низ, трябва да използвате израз като този:

StringBuilder name = new StringBuilder();

Списък с методи

Класът StringBuilderима две дузини полезни методи. Ето най-важните:

Метод Описание
StringBuilder append(obj)
Преобразува подавания обект в низ и го добавя към текущия низ
StringBuilder insert(int index, obj)
Преобразува подавания обект в низ и го вмъква в текущия низ
StringBuilder replace(int start, int end, String str)
Заменя частта от низа, указана от интервала start..end, с подаден низ
StringBuilder deleteCharAt(int index)
Премахва знака с посочения индекс от низа
StringBuilder delete(int start, int end)
Премахва символи в посочения интервал от низа
int indexOf(String str, int index)
Търси подниз в текущия низ
int lastIndexOf(String str, int index)
Търси подниз в текущия низ, започвайки от края
char charAt(int index)
Връща знака в низа при подаден индекс
String substring(int start, int end)
Връща подниза, дефиниран от посочения интервал
StringBuilder reverse()
Обръща текущия низ.
void setCharAt(int index, char)
Променя знака при посочения индекс на предадения знак
int length()
Връща дължината на низа в знаци

Ето кратко описание на всеки метод


2. Описание на методите:

Добавяне към низ

За да добавите нещо към променлив низ ( StringBuilder), използвайте append()метода. Пример:

Код Описание
StringBuilder builder = new StringBuilder("Hi");
builder.append("Bye");
builder.append(123);
Hi
HiBye
HiBye123

Преобразуване в standardн низ

За да конвертирате StringBuilderобект в String обект, просто трябва да извикате неговия toString()метод. Пример

Код Изход
StringBuilder builder = new StringBuilder("Hi");
builder.append(123);
String result = builder.toString();
System.out.println(result);
Hi123

Как да изтрия знак?

За да изтриете символ в променлив низ, трябва да използвате deleteCharAt()метода. Пример:

Код Изход
StringBuilder builder = new StringBuilder("Hello");
builder.deleteCharAt(2);
String result = builder.toString();
System.out.println(result);
Helo

Как да заменя част от низ с друг низ?

За това има replace(int begin, int end, String str)метод. Пример:

Код Изход
StringBuilder builder = new StringBuilder("Mellow");
builder.replace(2, 5, "Hello!");
String result = builder.toString();
System.out.println(result);
MeHello!w


3. Полезни примери за работа с низове

Как да обърна низ?

Има специален метод за това — reverse(); Пример:

Код Изход
String str = "Hello";
StringBuilder builder = new StringBuilder(str);
builder.reverse();
String result = builder.toString();
System.out.println(result);
olleH

StringBufferклас

Има още един клас — StringBuffer, който е аналог на StringBuilderкласа, но методите му са маркирани с synchronizedмодификатора. Това означава, че StringBufferобектът може да бъде достъпен едновременно от множество нишки.

Но е много по-бавно от StringBuilder. Може да се нуждаете от този клас, когато започнете активно да изследвате многонишковостта в приключението Java Multithreading .