Menguasai Metode Java String compareTo(): Sintaks, Kasus Penggunaan, dan Contoh Praktis
Apa Itu compareTo() dalam Java?
Metode compareTo() membandingkan dua string secara leksikografis. Setiap karakter dikonversi ke nilai Unicode-nya, dan metode mengembalikan int yang menunjukkan urutan relatifnya. Jika string identik, ini mengembalikan 0; jika tidak, hasilnya negatif jika string pertama mendahului yang kedua, atau positif jika ia mengikutinya.
Metode ini didefinisikan dalam antarmuka java.lang.Comparable.
Sintaks
public int compareTo(String str)
Parameter: str – string yang akan dibandingkan dengan string pemanggil.
Nilai Kembali: Sebuah int yang negatif, nol, atau positif tergantung pada urutan leksikografis.
< 0 – string pemanggil leksikografis lebih dulu. == 0 – kedua string sama. > 0 – string argumen leksikografis lebih dulu.
Contoh 1: Penggunaan Dasar
public class SampleString { public static void main(String[] args) { String str = "a"; System.out.println("Compare \"a\" to \"b\": " + str.compareTo("b")); str = "b"; System.out.println("Compare \"b\" to \"a\": " + str.compareTo("a")); str = "b"; System.out.println("Compare \"b\" to \"b\": " + str.compareTo("b")); } } Output
- Compare "a" to "b": -1
- Compare "b" to "a": 1
- Compare "b" to "b": 0
Penjelasan:
- “a” datang sebelum “b” secara alfabetis, jadi hasilnya negatif.
- “b” datang setelah “a”, menghasilkan hasil positif.
- String identik menghasilkan nol.
Contoh 2: Case-Sensitive vs. Case-Insensitive
public class SampleString { public static void main(String[] args) { String str = "RockStar"; System.out.println("Case‑sensitive compare to \"rockstar\": " + str.compareTo("rockstar")); System.out.println("Case‑insensitive compare to \"ROCKSTAR\": " + str.compareToIgnoreCase("ROCKSTAR")); } } Output
- Case‑sensitive compare to "rockstar": -32
- Case‑insensitive compare to "ROCKSTAR": 0
Kapan Menggunakan compareTo()
Gunakan compareTo() ketika Anda memerlukan urutan alami (leksikal) string, seperti mengurutkan daftar nama atau melakukan pencarian kamus. Metode ini mengikuti aturan yang sama dengan metode String.compareToIgnoreCase() tetapi menghormati case.
Skenario umum meliputi:
- Mengurutkan koleksi objek
String dengan Collections.sort(). - Mengimplementasikan
Comparable dalam kelas kustom yang memerlukan perbandingan string. - Melakukan pencarian biner pada array string yang diurutkan.
Contoh 3: Perbandingan Praktis
public class CompareDemo { public static void main(String[] args) { String s1 = "Guru1"; String s2 = "Guru2"; System.out.println("String 1: " + s1); System.out.println("String 2: " + s2); int result = s1.compareTo(s2); if (result < 0) { System.out.println("\"" + s1 + "\" is lexicographically higher than \"" + s2 + "\""); } else if (result == 0) { System.out.println("\"" + s1 + "\" is lexicographically equal to \"" + s2 + "\""); } else { System.out.println("\"" + s1 + "\" is lexicographically less than \"" + s2 + "\""); } } } Output
- String 1: Guru1
- String 2: Guru2
- "Guru1" is lexicographically higher than "Guru2"