Vamos a comparar cadenas de caracteres en Java. Para eso se me están ocurriendo tres métodos con los que poder hacerlo:
Equals()
Es el más común y el más cómodo.
Ejemplo: if (cadena1.equals(cadena2))
Siendo cadena1 y cadena2 dos String
CompareTo()
Se utiliza para la ordenación de cadenas. El método retorna 0 si ambas cadenas tienen el mismo contenido, negativo si el String es menor que el parámetro que le pasamos y positivo en el caso de ser mayor.
Ejemplo:
if (cadena1.compareTo(cadena2) == 0)
// cadena1 y cadena2 son iguales
else if (cadena1.compareTo(cadena2) < 0)
//cadena1 va antes que cadena2
else if (cadena1.compareTo(cadena2) > 0)
//cadena2 va después que cadena1
Esta comparación es según la tabla de códigos Ascii con lo que las mayúsculas van antes que las minúsculas y las últimas serán las letras acentuadas.
Collator
Dependiendo del idioma, si queremos un orden alfabético real, deberíamos usar la clase Collator, variando su comportamiento según los flags que nos ofrece Java:
Collator.PRIMARY no discrimina mayúsculas, minúsculas y acentuadas, es decir serían iguales la a, A, á o Á pero distinta por supuesto de la b.
Collator.SECUNDARY no discrimina entre mayúsculas y minúsculas, pero si son distintas si tienen acento.
Collator.TERCIARY considera distintas las tres letras (a, A o á).
Collator.IDENTICAL sólo las considera iguales si lo es su código por debajo. Por ejemplo, se puede codificar internamente una á con acento de varias formas. Con este nivel, se considerarían distintas, aunque ambas se vean como á con acento.
Ejemplo:
Collator comparador = Collator.getInstance();
comparador.setStrength(Collator.PRIMARY);
// Estas dos cadenas son iguales y retornaría true
System.out.println(comparador.compare("Hóla", "hola"));
comparador.setStrength(Collator.SECUNDARY);
// Ahora son distintas por el acento
System.out.println(comparador.compare("Hóla", "hola"));
// pero estas otras dos son iguales
System.out.println(comparador.compare("Hola", "hola"));
comparador.setStrength(Collator.TERCIARY);
// Ahora son distintas por la mayúscula
System.out.println(comparador.compare("Hola", "hola"));
// pero estas sí son iguales
System.out.println(comparador.compare("hola", "hola"));
¿Alguien sabría que estamos haciendo si comparamos dos String con “==”?, jejeje J

Replica a parricide Cancelar la respuesta