1. Karakterláncok módosítása

A Java nyelvben a karakterláncok megváltoztathatatlan objektumok. Ezt azért tették, hogy a String osztályt rendkívül optimalizálttá tegyék, és mindenhol lehessen használni. Például a HashMap gyűjtemény kulcsaként csak a megváltoztathatatlan típusokat javasoljuk használni .

Azonban gyakran előfordulnak olyan helyzetek, amikor a programozók kényelmesebbnek találják, ha az Stringosztály változtatható. Olyan osztályt akarnak, amely nem hoz létre minden egyes metódus meghívásakor új részkarakterláncot.

Nos, tegyük fel, hogy nagyon nagy karakterláncunk van, és gyakran hozzá kell adnunk valamit a végéhez. Ebben az esetben még a karakterek gyűjteménye ( ArrayList<Character>) is hatékonyabb lehet, mint a String objektumok folyamatos újraalkotása és összefűzése.

Pontosan ezért került a Java nyelvbe egy megváltoztatható karakterlánc-szerű típus. Úgy hívják StringBuilder.

Objektum létrehozása

Ha egy meglévő karakterlánc alapján szeretne objektumot létrehozni StringBuilder, akkor végre kell hajtania egy utasítást, például:

StringBuilder name = new StringBuilder(string);

Üres változtatható karakterlánc létrehozásához egy ehhez hasonló utasítást kell használnia:

StringBuilder name = new StringBuilder();

A módszerek listája

Az StringBuilderosztályban két tucat hasznos módszer található. Íme a legfontosabbak:

Módszer Leírás
StringBuilder append(obj)
Az átadott objektumot karakterláncsá alakítja, és hozzáfűzi az aktuális karakterlánchoz
StringBuilder insert(int index, obj)
Az átadott objektumot karakterláncsá alakítja, és beilleszti az aktuális karakterláncba
StringBuilder replace(int start, int end, String str)
Lecseréli a karakterlánc kezdő..vége intervallum által megadott részét az átadott karakterláncra
StringBuilder deleteCharAt(int index)
Eltávolítja a karakterláncból a megadott indexű karaktert
StringBuilder delete(int start, int end)
Eltávolítja a karakterláncból a megadott intervallumon belüli karaktereket
int indexOf(String str, int index)
Alkarakterláncot keres az aktuális karakterláncban
int lastIndexOf(String str, int index)
Egy részkarakterláncot keres az aktuális karakterláncban, a végétől kezdve
char charAt(int index)
Az átadott indexnél lévő karakterlánc karakterét adja vissza
String substring(int start, int end)
A megadott intervallum által meghatározott részkarakterláncot adja vissza
StringBuilder reverse()
Megfordítja az aktuális karakterláncot.
void setCharAt(int index, char)
A megadott indexben lévő karaktert átadott karakterre változtatja
int length()
A karakterlánc hosszát adja vissza karakterben

Itt található az egyes módszerek rövid leírása


2. A módszerek leírása:

Hozzáfűzés egy karakterlánchoz

Ha hozzá szeretne adni valamit egy változó karakterlánchoz ( StringBuilder), használja a append()metódust. Példa:

Kód Leírás
StringBuilder builder = new StringBuilder("Hi");
builder.append("Bye");
builder.append(123);
Hi
HiBye
HiBye123

Konvertálás szabványos karakterláncra

StringBuilderAhhoz, hogy egy objektumot String objektummá konvertáljon , csak meg kell hívnia toString()a metódusát. Példa

Kód Kimenet
StringBuilder builder = new StringBuilder("Hi");
builder.append(123);
String result = builder.toString();
System.out.println(result);
Hi123

Hogyan törölhetek egy karaktert?

Egy karakter törléséhez egy változó karakterláncban a deleteCharAt()metódust kell használnia. Példa:

Kód Kimenet
StringBuilder builder = new StringBuilder("Hello");
builder.deleteCharAt(2);
String result = builder.toString();
System.out.println(result);
Helo

Hogyan cserélhetem ki egy karakterlánc egy részét egy másik karakterláncra?

Erre megvan a replace(int begin, int end, String str)módszer. Példa:

Kód Kimenet
StringBuilder builder = new StringBuilder("Mellow");
builder.replace(2, 5, "Hello!");
String result = builder.toString();
System.out.println(result);
MeHello!w


3. Hasznos példák a húrokkal való munkára

Hogyan fordíthatok meg egy karakterláncot?

Van erre egy speciális módszer — reverse(); Példa:

Kód Kimenet
String str = "Hello";
StringBuilder builder = new StringBuilder(str);
builder.reverse();
String result = builder.toString();
System.out.println(result);
olleH

StringBufferosztály

Van egy másik osztály — a StringBuffer, amely az osztály analógja StringBuilder, de metódusai a synchronizedmódosítóval vannak megjelölve. Ez azt jelenti, hogy az StringBufferobjektum egyszerre több szálból is elérhető.

De sokkal lassabb, mint StringBuilder. Szükség lehet erre az osztályra, amikor elkezdi aktívan felfedezni a többszálú Java Multithreading küldetést.