1. Mengubah suai rentetan

Di Jawa, rentetan ialah objek yang tidak boleh diubah. Ini dilakukan untuk menjadikan kelas String sangat dioptimumkan dan membolehkannya digunakan di mana-mana sahaja. Contohnya, hanya jenis tidak berubah disyorkan untuk digunakan sebagai kunci dalam koleksi HashMap .

Walau bagaimanapun, situasi sering timbul apabila pengaturcara akan mendapati ia lebih mudah untuk Stringkelas boleh berubah. Mereka mahukan kelas yang tidak mencipta subrentetan baharu setiap kali salah satu kaedahnya dipanggil.

Baiklah, katakan kita mempunyai rentetan yang sangat besar dan kita perlu kerap menambahkan sesuatu pada penghujungnya. Dalam kes ini, walaupun koleksi aksara ( ArrayList<Character>) boleh menjadi lebih cekap daripada sentiasa mencipta semula dan menggabungkan objek String.

Itulah sebabnya jenis seperti String yang boleh diubah telah ditambahkan pada bahasa Java. Ia dipanggil StringBuilder.

Mencipta objek

Untuk mencipta StringBuilderobjek berdasarkan rentetan sedia ada, anda perlu melaksanakan pernyataan seperti:

StringBuilder name = new StringBuilder(string);

Untuk mencipta rentetan boleh ubah kosong, anda perlu menggunakan pernyataan seperti ini:

StringBuilder name = new StringBuilder();

Senarai kaedah

Kelas ini StringBuildermempunyai dua dozen kaedah yang berguna. Berikut adalah yang paling penting:

Kaedah Penerangan
StringBuilder append(obj)
Menukar objek yang diluluskan kepada rentetan dan menambahkannya pada rentetan semasa
StringBuilder insert(int index, obj)
Menukar objek yang diluluskan kepada rentetan dan memasukkannya ke dalam rentetan semasa
StringBuilder replace(int start, int end, String str)
Menggantikan bahagian rentetan yang ditentukan oleh selang permulaan..akhir dengan rentetan yang diluluskan
StringBuilder deleteCharAt(int index)
Mengalih keluar aksara dengan indeks yang ditentukan daripada rentetan
StringBuilder delete(int start, int end)
Mengalih keluar aksara dalam selang yang ditentukan daripada rentetan
int indexOf(String str, int index)
Mencari subrentetan dalam rentetan semasa
int lastIndexOf(String str, int index)
Mencari subrentetan dalam rentetan semasa, bermula dari penghujung
char charAt(int index)
Mengembalikan aksara dalam rentetan pada indeks yang diluluskan
String substring(int start, int end)
Mengembalikan subrentetan yang ditakrifkan oleh selang waktu yang ditentukan
StringBuilder reverse()
Membalikkan rentetan semasa.
void setCharAt(int index, char)
Menukar aksara pada indeks yang ditentukan kepada aksara yang diluluskan
int length()
Mengembalikan panjang rentetan dalam aksara

Berikut adalah penerangan ringkas bagi setiap kaedah


2. Penerangan kaedah:

Melampirkan pada rentetan

Untuk menambah sesuatu pada rentetan boleh ubah ( StringBuilder), gunakan append()kaedah tersebut. Contoh:

Kod Penerangan
StringBuilder builder = new StringBuilder("Hi");
builder.append("Bye");
builder.append(123);
Hi
HiBye
HiBye123

Menukar kepada rentetan standard

Untuk menukar StringBuilderobjek kepada objek String, anda hanya perlu memanggil kaedahnya toString(). Contoh

Kod Pengeluaran
StringBuilder builder = new StringBuilder("Hi");
builder.append(123);
String result = builder.toString();
System.out.println(result);
Hi123

Bagaimanakah saya memadamkan aksara?

Untuk memadamkan aksara dalam rentetan boleh ubah, anda perlu menggunakan deleteCharAt()kaedah tersebut. Contoh:

Kod Pengeluaran
StringBuilder builder = new StringBuilder("Hello");
builder.deleteCharAt(2);
String result = builder.toString();
System.out.println(result);
Helo

Bagaimanakah saya menggantikan sebahagian daripada rentetan dengan rentetan lain?

Untuk ini ada kaedahnya replace(int begin, int end, String str). Contoh:

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


3. Contoh berguna bekerja dengan rentetan

Bagaimanakah cara saya membalikkan rentetan?

Terdapat kaedah khas untuk melakukan ini — reverse(); Contoh:

Kod Pengeluaran
String str = "Hello";
StringBuilder builder = new StringBuilder(str);
builder.reverse();
String result = builder.toString();
System.out.println(result);
olleH

StringBufferkelas

Terdapat satu lagi kelas - StringBuffer, yang merupakan analog kelas StringBuilder, tetapi kaedahnya ditandakan dengan synchronizedpengubah suai. Ini bermakna StringBufferobjek boleh diakses secara serentak daripada berbilang benang.

Tetapi ia jauh lebih perlahan daripada StringBuilder. Anda mungkin memerlukan kelas ini apabila anda mula meneroka secara aktif multithreading dalam pencarian Java Multithreading .