Tambahkan Karakter ke Rentetan pada Kedudukan yang Diberi

1. Pengenalan

Dalam tutorial ringkas ini, kami akan menunjukkan cara menambahkan watak pada kedudukan tertentu dalam String di Java .

Kami akan membentangkan tiga pelaksanaan fungsi sederhana yang menggunakan String yang asal , watak dan kedudukan di mana kita perlu menambahkannya.

Oleh kerana kelas String adalah muktamad dan fungsi tidak boleh berubah, String baru harus mengembalikan String baru dengan watak tambahan.

2. Menggunakan Array Karakter

Di sini, ideanya adalah untuk membuat susunan watak baru dan menyalin watak dari String yang asal sebelum kedudukan yang diberikan.

Selepas itu, kami meletakkan watak baru pada kedudukan dan menyalin watak-watak selebihnya dari String yang asal pada kedudukan berikutnya dari array baru.

Akhirnya, kami membina String yang dikehendaki dari tatasusunan itu.

public String addChar(String str, char ch, int position) { int len = str.length(); char[] updatedArr = new char[len + 1]; str.getChars(0, position, updatedArr, 0); updatedArr[position] = ch; str.getChars(position, len, updatedArr, position + 1); return new String(updatedArr); }

Berbanding dengan dua kaedah lain, ini adalah pendekatan reka bentuk tahap rendah dan memberi kita fleksibiliti paling banyak.

3. Menggunakan Kaedah substring

Pendekatan tahap lebih mudah dan lebih tinggi adalah dengan menggunakan subrentetan () kaedah yang String kelas. Ini menyiapkan String dengan menggabungkan:

  1. Substring String yang asal sebelum kedudukan
  2. Watak baru
  3. Substring String yang asal selepas kedudukan
public String addChar(String str, char ch, int position) { return str.substring(0, position) + ch + str.substring(position); }

Walaupun kod di atas lebih mudah dibaca, ia mempunyai kelemahan kerana ia membuat sejumlah objek sementara untuk menentukan hasilnya. Oleh kerana String adalah kelas yang tidak dapat diubah, setiap panggilan ke kaedah substringnya () membuat instance String baru .

Akhirnya, ketika kita menggabungkan bahagian-bahagian, pengkompil membuat objek StringBuilder untuk menambahkannya satu persatu. Setiap objek String dan StringBuilder memperuntukkan lokasi memori yang berasingan untuk susunan watak dalamannya.

Pelaksanaan ini juga perlu menyalin semua watak tiga kali dari satu array ke yang lain.

Sekiranya kita perlu memanggil kaedah ini berkali-kali, objek sementara mungkin mengisi memori timbunan dan itu akan mencetuskan GC dengan kerap. Ini juga boleh mempengaruhi prestasi hingga tahap tertentu.

4. Menggunakan StringBuilder

StringBuilder adalah kelas utiliti yang disediakan oleh perpustakaan Java untuk membina dan memanipulasi objek String dalam beberapa cara.

Kita boleh melaksanakan fungsi yang sama menggunakan kaedah insert () dari kelas StringBuilder :

public String addChar(String str, char ch, int position) { StringBuilder sb = new StringBuilder(str); sb.insert(position, ch); return sb.toString(); }

Kod di atas hanya perlu membuat satu objek StringBuilder sahaja untuk memasukkan watak pada kedudukan tersebut. Ia memperuntukkan jumlah memori yang sama dengan String yang asli , tetapi untuk mewujudkan tempat bagi watak baru, array yang mendasari mengalihkan watak-watak seterusnya dengan 1 kedudukan.

Walaupun menggunakan StringBuilder mungkin lebih lambat, ia tidak mempunyai beban memori untuk memulai objek sementara. Kami juga mempunyai kod yang ringkas dan mudah dibaca.

5. Kesimpulan

Dalam artikel ini, kami memfokuskan pada beberapa cara menambahkan watak dalam objek String di Java . Kami telah melihat bahawa pelaksanaan menggunakan array watak menawarkan prestasi terbaik dan dengan kaedah substring memberikan pendekatan yang lebih mudah dibaca.

Cara pilihan untuk melaksanakan penyelesaian menggunakan yang StringBuilder kelas - kerana ia yang mudah, kurang bug rawan dan tawaran yang baik dan prestasi yang stabil .

Seperti biasa, kod sumber lengkap untuk tutorial di atas boleh didapati di GitHub.