You are on page 1of 7

¿Qué es el método compareTo () en Java?

El método compareTo () se usa para realizar una ordenación natural en una


cadena. Clasificación natural significa el orden de clasificación que se aplica al objeto,
por ejemplo, orden léxico para Cadena, orden numérico para ordenar enteros, etc.

El orden léxico no es más que orden alfabético. compareTo methods hace una
comparación secuencial de letras en la cadena que tienen la misma posición.

compareTo está definido en la interfaz java.lang.Comparable

Sintaxis :

1 public int compareTo (String str)


Entrada de parámetros:

str – Este método solo acepta un solo tipo de datos de cadena de entrada.

Método de devoluciones:

Este método Java devuelve un tipo de datos int que se basa en la comparación
lexicográfica entre dos cadenas.

 devuelve <0, entonces la cadena que llama al método es primero


lexicográficamente
 devuelve == 0 entonces las dos cadenas son lexicográficamente equivalentes
 devuelve> 0, entonces el parámetro pasado al método compareTo es
lexicográficamente el primero.

Entendamos con un ejemplo:

Ejemplo 1:
1 public class Sample_String {
2 public static void main(String[] args) {
3 String str_Sample = "a";
4 System.out.println("Comparar con 'a' b es:" + str_Sample.compareTo("b"));
5 str_Sample = "b";
6 System.out.println("Comparar con 'b' a es:" + str_Sample.compareTo("a"));
7 str_Sample = "b";
8 System.out.println("Comparar con 'b' b es:" + str_Sample.compareTo("b"));
9 }
10 }
Salida

Compare con ‘a’ b es: -1


Compare con ‘b’ a es: 1
Compare con ‘b’ b es: 0

Aquí,
 El carácter a viene antes que b alfabéticamente. Por lo tanto, el resultado es -1
 El carácter b viene antes que alfabéticamente. Por lo tanto, la salida es 1
 El carácter b es equivalente, por lo tanto, la salida es 0.

Puede usar el método Use “compareToIgnoreCase” en caso de que no desee que el


resultado sea sensible a mayúsculas y minúsculas.

Ejemplo 2:
public class Sample_String {
1
public static void main(String[] args) {
2
// Compare con una cadena
3
String str_Sample = "RockStar";
4
System.out.println("Comparar con 'ROCKSTAR':" + str_Sample.compareTo("rockstar"));
5
// Comparar con - Ignorar caso
6
System.out.println("Comparar con 'ROCKSTAR' - Caso Ignorado:" +
7
str_Sample.compareToIgnoreCase("ROCKSTAR"));
8
}
9
}
Salida

Comparar con ‘ROCKSTAR’: -32


Comparar con ‘ROCKSTAR’ – Caso ignorado: 0

¿Cuándo usar el método CompareTo ()?


CompareTo () se utiliza para comparar dos cadenas lexicográficamente. Cada carácter
de ambas cadenas se convierte en un valor Unicode. Sin embargo, si ambas cadenas
son iguales, este método devuelve 0 sino que solo da como resultado un valor
negativo o positivo.

En este método, si la primera cadena siempre es lexicográficamente más alta que la


segunda cadena, devuelve un número positivo.

si a1> a2, devuelve un número negativo

si a1 <a2, devuelve un número positivo

si a1 == a2, devuelve 0

Ejemplo 3:
1 clase pública Compare {
2 public static void main(String[] args) {
3 Cadena s1 = "Guru1";
4 Cadena s2 = "Guru2";
5 System.out.println("Cadena 1:" + s1);
6 System.out.println("String 2:" + s2);
7
8 // Compara las dos cadenas.
9 int S = s1.compareTo(s2);
10
11 // Muestra los resultados de la comparación.
12
13 if (S < 0) {
14 System.out.println("\"" + s1 + "\"" + " is lexicographically higher than " + "\"" + s2 + "\"");
15 } else if (S == 0) {
16 System.out.println("\"" + s1 + "\"" + " is lexicographically equal to " + "\"" + s2 + "\"");
17 } else if (S > 0) {
18 System.out.println("\"" + s1 + "\"" + " is lexicographically less than " + "\"" + s2 + "\"");
19 }
20 }
21 }
Salida:

Cadena 1: Guru1
Cadena 2: Guru2
“Guru1” es lexicográficamente más alta que “Guru2”

Substring en Java
Como ya sabemos, en java un String es un conjunto de caracteres, pero como
todo conjunto puede tener subconjuntos de la misma cadena. Aquí es donde entra
en juego el método subString de la clase java String.

Substring en Java
El método subString fue introducido en el JDK desde la versión JDK1.0 y la clase
java.lang.String hereda directamente de la clase base java.lang.Object

Métodos subString de la clase String


Como podemos ver La clase String tiene sobrecargado el método subString con
dos variantes de parámetros.

1. public String substring(int beginIndex): Este método regresa una subcadena


de caracteres de la cadena principal. El parámetro beginIndex indica el inicio
desde donde se comenzará la subcadena, este parámetro es de tipo entero y es
obligatorio.
2. public String substring(int beginIndex, int endIndex): Este segundo método al
igual que el primero regresa una subcadena de la cadena principal, con la
diferencia de que este método tiene dos parámetros. beginIndex indica el
carácter de inicio de la cadena y es un parámetro obligatorio.endIndex indica la
posición del carácter final de la cadena, este parámetro es opcional y para
obtener la posición final del subString se hace la siguiente operación:(endIndex
– 1)
Nota: Para trabajar con subString en java podemos apoyarnos del método
String.length(), este método es muy útil para saber la longitud de un String y así
poder calcular las cadenas.
También vemos que el método sobrecargado subString regresa un objeto de tipo
String y es un método público, esto significa que desde cualquier clase se pueden
crear instancias de la clase String de java.

Ejemplos de substring(int beginIndex)


1. "STRING".substring(2) retorna el valor "RING"
2. "SUBSTRING".substring(3) retorna el valor "STRING"
3. "EN JAVA".substring(4) retorna el valor "AVA"
Ejemplos de substring(int beginIndex, int endIndex)
Hay que recordar que al parámetro endIndex hay que restarle un 1 para obtener
la posición final de la cadena.
1. "Java SubString".substring(5, 8) returns "Sub"
2. "String.subString".substring(1, 6) returns "tring"
Ejemplo completo de Java SubString
1. package cursojava;
2.
3. public class SubStringMain {
4.
5. public static void main(String []args){
6.
7. String cadena = "EL MAR ES AZUL Y EL CIELO TAMBIEN";
8.
9. int longitud = cadena.length();
10.
11. System.out.println("Ejemplo de SubString en Java 1 = " + cadena.substring(5));
12. System.out.println("Ejemplo de SubString en Java 2 = " + cadena.substring(9));
13. System.out.println("Ejemplo de SubString en Java 3 = " + cadena.substring(12));
14. System.out.println("Ejemplo de SubString en Java 4 = " + cadena.substring(1, 10));
15. System.out.println("Ejemplo de SubString en Java 5 = " + cadena.substring(5, 20));
16.
17. }
18. }
Salida del programa
1. Ejemplo de SubString en Java 1 = R ES AZUL Y EL CIELO TAMBIEN
2. Ejemplo de SubString en Java 2 = AZUL Y EL CIELO TAMBIEN
3. Ejemplo de SubString en Java 3 = UL Y EL CIELO TAMBIEN
4. Ejemplo de SubString en Java 4 = L MAR ES
5. Ejemplo de SubString en Java 5 = R ES AZUL Y EL
Excepciones
Cuando usamos el metro substring() de la clase String puede existir algún error
en el momento de trabajar con cadenas de caracteres, esto pasa mas a menudo
en tiempo de ejecución, ya que por lo regular las cadenas se van almacenado en
variables.
La excepción o error que se detona al trabajar con substring
es IndexOutOfBoundsException, esta excepción trabaja de forma similar para los
dos métodos sobrecargados de substring().
1. public String substring(int beginIndex) Si el parametro beginIndex es negativo
o mayor que la longitud de la cadena se lanza la excepcion
IndexOutOfBoundsException.
2. public String substring(int beginIndex, int endIndex) Si beginIndex es
negativo, o endIndex es mayor que la longitud de la cadena, o beginIndex es
mayor que endIndex.
En definitiva, si queremos cortar la cadena desde una posición incorrecta o que no
existe dentro de la longitud de la cadena, se lanzará un error de tipo
IndexOutOfBoundsException.

Ejemplo sin control de excepciones


Como vemos en este ejemplo, estamos tratando de cortar una cadena desde la
posición -1, esto no se puede hacer y por lo tanto nos esta mandando un error.

1. package cursojava;
2.
3. public class SubStringMain {
4.
5. public static void main(String []args){
6.
7. String cadena = "EL MAR ES AZUL Y EL CIELO TAMBIEN";
8. System.out.println("Ejemplo de SubString en Java 1 = " + cadena.substring(-1));
9.
10. }
11. }
Salida del ejemplo
Esta es la consecuencia de no cortar de forma adecuada una cadena, esto puede
hacer que un programa termine de forma incorrecta, para solucionarlo tenemos
que realizar ciertas validaciones y controlar la excepción.

1. Exception in thread "main" java.lang.StringIndexOutOfBoundsException: String


index out of range: -1
2. at java.lang.String.substring(String.java:1927)
3. at cursojava.SubStringMain.main(SubStringMain.java:11)
4. C:\Users\Mario\AppData\Local\NetBeans\Cache.2\executor-snippets\run.xml:53:
Java returned: 1
5. BUILD FAILED (total time: 1 second)
Ejemplo con control de excepciones
En este caso estamos controlando el error usando un try catch.
1. package cursojava;
2.
3. public class SubStringMain {
4.
5. public static void main(String []args){
6.
7. String cadena = "EL MAR ES AZUL Y EL CIELO TAMBIEN";
8.
9. try{
10. System.out.println("Ejemplo de SubString en Java 1 = " + cadena.substring(-1));
11. }catch(java.lang.StringIndexOutOfBoundsException ex){
12. System.out.println("Ocurrio un error:(Indice fuera de rango): " + ex);
13. }
14.
15. System.out.println("Continua la ejecucion del programa...");
16.
17. }
18. }
Resultado de la ejecución
Si controlamos el error, podemos continuar trabajando con el programa de forma
normal.

1. Ocurrio un error:(Indice fuera de rango):


java.lang.StringIndexOutOfBoundsException: String index out of range: -1
2. Continua la ejecucion del programa...
Conclusión
Como puedes ver, el uso del método subString de la clase String es fácil y es muy
útil para la extracción de subcadenas de caracteres. En este curso de java
aprenderás mucho mas.

Puedes hacer extracción de cadenas para después pasarlo a un switch o


un if para realizar condicionales, esto es muy común en java.

You might also like