Kompleksitas akan tergantung pada regex yang Anda gunakan untuk melakukan pemisahan. (Ya, argumen yang Anda berikan ke String.split (...) adalah regex!)
Sebagai contoh Anda, itu akan menjadi di O(N)
mana N
jumlah karakter dalam String input.
Algoritma split cukup mudah, berdasarkan implementasi regex yang ada. Deskripsi tingkat tinggi adalah:
- Kompilasi regex dan buat korek api
- Iterate atas string:
- Gunakan
Matcher.find(...)
untuk menemukan batas kata berikutnya
- Gunakan String.substring untuk mengekstrak kata
- Tambahkan kata ke daftar string
- Konversi daftar string ke array string.
Pencarian untuk jeda antara "kata" akan menjadi O(N)
atau lebih kompleks, tergantung pada regex ( find
panggilan). Konstruksi daftar, susunan hasil, dan substring akan menjadi O(N)
yang terburuk.
Detail tepatnya ada di kode sumber, yang dapat Anda temukan menggunakan Google. (Cari "java.lang.String" source
, pilih satu dan kemudian telusuri ke versi Java yang Anda minati. Atau cari file dalam kode sumber file ZIP yang termasuk dalam instalasi JDK Anda)