Tambahkan Karakter ke String pada Posisi yang Diberikan

1. Perkenalan

Dalam tutorial singkat ini, kami akan mendemonstrasikan cara menambahkan karakter pada posisi tertentu dalam String di Java .

Kami akan menyajikan tiga implementasi fungsi sederhana yang mengambil String asli , karakter, dan posisi di mana kami perlu menambahkannya.

Karena kelas String bersifat final dan tidak dapat diubah, fungsi tersebut harus mengembalikan String baru dengan karakter yang ditambahkan.

2. Menggunakan Array Karakter

Di sini, idenya adalah membuat larik karakter baru dan menyalin karakter dari String asli sebelum posisi yang diberikan.

Setelah itu, kami meletakkan karakter baru di posisi dan menyalin sisa karakter dari String asli di posisi berikutnya dari array baru.

Akhirnya, kami membangun String yang diinginkan dari array 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); }

Dibandingkan dengan dua metode lainnya, ini adalah pendekatan desain tingkat rendah dan paling fleksibel.

3. Menggunakan Metode substring

Pendekatan tingkat yang lebih mudah dan lebih tinggi adalah dengan menggunakan metode substring () dari kelas String . Ini mempersiapkan String dengan menggabungkan:

  1. Substring dari String asli sebelum posisi
  2. Karakter baru
  3. Substring dari String asli setelah posisi
public String addChar(String str, char ch, int position) { return str.substring(0, position) + ch + str.substring(position); }

Meskipun kode di atas lebih mudah dibaca, ia memiliki kerugian karena ia membuat sejumlah objek sementara untuk menentukan hasilnya. Karena String adalah kelas yang tidak dapat diubah, setiap panggilan ke metode substring () -nya membuat instance String baru .

Terakhir, saat kita menggabungkan bagian-bagiannya, kompilator membuat objek StringBuilder untuk menambahkannya satu per satu. Setiap objek String dan StringBuilder mengalokasikan lokasi memori terpisah untuk array karakter internalnya.

Implementasi ini juga perlu menyalin semua karakter tiga kali dari satu larik ke larik lainnya.

Jika kita perlu memanggil metode berkali-kali, objek sementara mungkin mengisi memori heap dan itu akan sering memicu GC. Ini juga dapat mempengaruhi kinerja sampai batas tertentu.

4. Menggunakan StringBuilder

StringBuilder adalah kelas utilitas yang disediakan oleh pustaka Java untuk membangun dan memanipulasi objek String dalam beberapa cara.

Kita dapat mengimplementasikan fungsionalitas yang sama menggunakan metode 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(); }

Kode di atas hanya perlu membuat satu objek StringBuilder untuk memasukkan karakter pada posisi tersebut. Ini mengalokasikan jumlah memori yang sama dengan yang dimiliki String asli , tetapi untuk membuat tempat untuk karakter baru, array yang mendasari menggeser karakter berikutnya dengan 1 posisi.

Meskipun menggunakan StringBuilder mungkin lebih lambat, ia tidak memiliki beban memori untuk menginisialisasi objek sementara. Kami juga berakhir dengan kode yang sederhana dan dapat dibaca.

5. Kesimpulan

Pada artikel ini, kami fokus pada beberapa cara menambahkan karakter dalam objek String di Java . Kami telah melihat bahwa implementasi menggunakan larik karakter menawarkan kinerja terbaik dan dengan metode substring memberikan pendekatan yang lebih mudah dibaca.

Cara yang lebih disukai menerapkan solusinya adalah menggunakan yang StringBuilder kelas - sesederhana itu, kurang bug rawan dan penawaran yang baik dan kinerja yang stabil .

Seperti biasa, kode sumber lengkap untuk tutorial di atas tersedia di GitHub.