Dominando el método compareTo() de Java String: Sintaxis, casos de uso y ejemplos prácticos
¿Qué es compareTo() en Java?
El método compareTo() compara dos strings lexicográficamente. Cada carácter se convierte a su valor Unicode, y el método devuelve un int que indica el orden relativo. Si las cadenas son idénticas, devuelve 0; de lo contrario, el resultado es negativo si la primera cadena precede a la segunda, o positiva si la sigue.
Este método está definido en la interfaz java.lang.Comparable.
Sintaxis
public int compareTo(String str)
Parámetro: str – la cadena a comparar con la cadena invocante.
Valor de retorno: Un int que es negativo, cero o positivo dependiendo del orden lexicográfico.
< 0– la cadena invocante es lexicográficamente primera.== 0– las dos cadenas son iguales.> 0– la cadena argumento es lexicográficamente primera.
Ejemplo 1: Uso básico
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")); } }
Salida
- Compare "a" to "b": -1
- Compare "b" to "a": 1
- Compare "b" to "b": 0
Explicación:
- "a" viene antes que "b" alfabéticamente, así que el resultado es negativo.
- "b" viene después que "a", produciendo resultado positivo.
- Cadenas idénticas producen cero.
Ejemplo 2: Sensible a mayúsculas vs. insensible
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")); } }
Salida
- Case‑sensitive compare to "rockstar": -32
- Case‑insensitive compare to "ROCKSTAR": 0
Cuándo usar compareTo()
Usa compareTo() cuando necesites orden natural (léxico) de strings, como ordenar una lista de nombres o realizar búsquedas en diccionario. El método sigue las mismas reglas que String.compareToIgnoreCase() pero respeta mayúsculas/minúsculas.
Escenarios típicos incluyen:
- Ordenar colecciones de objetos
StringconCollections.sort(). - Implementar
Comparableen clases personalizadas que necesiten comparación de strings. - Realizar búsqueda binaria en arrays de strings ordenados.
Ejemplo 3: Comparación práctica
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 + "\" es lexicográficamente mayor que \"" + s2 + "\""); } else if (result == 0) { System.out.println("\"" + s1 + "\" es lexicográficamente igual a \"" + s2 + "\""); } else { System.out.println("\"" + s1 + "\" es lexicográficamente menor que \"" + s2 + "\""); } } }
Salida
- String 1: Guru1
- String 2: Guru2
- "Guru1" es lexicográficamente mayor que "Guru2"
Java
- Función print() en Python: Guía Práctica con Ejemplos
- Domine str.count() en Python: Cómo Contar Caracteres y Subcadenas con Ejemplos
- Método Java String length(): Cómo obtener el tamaño de un String (Ejemplo)
- Dominando Java String.indexOf(): Localizar subcadenas y ejemplos prácticos
- Entendiendo Java String.charAt(): Sintaxis, tipo de retorno, excepciones y ejemplo práctico
- Método Java String.contains(): Cómo comprobar subcadenas – Ejemplos prácticos
- Dominando Java String.endsWith(): Cómo comprobar sufijos de cadena con ejemplos
- Dominando el reemplazo de Strings en Java: replace(), replaceAll() y replaceFirst() explicados
- Lectura de archivos en Java con BufferedReader – Guía práctica con ejemplos
- Convertir Char a String en Java – Ejemplos Prácticos y Mejores Prácticas
- Invertir una Cadena en Java Usando Recursión – Guía Paso a Paso