Cómo comparar dos cadenas en Java
Métodos para comparar cadenas en Java
Java proporciona diferentes métodos que puede aprovechar para comparar dos cadenas en Java. Comparación de cadenas en Java es una característica que hace coincidir una secuencia de caracteres con una cadena.
Para aprender a comparar cadenas en Java, puede utilizar los métodos proporcionados por las siguientes clases.
- Clase de cadena de la JavaPaquete .lang.
- Clase de objetos de la JavaPaquete .util.
- Clase StringUtils del paquete org.apache.commons.lang3.
La mayoría de estos Java Los métodos de comparación de cadenas tienen soluciones para ignorar el caso. en esto Java En este tutorial aprenderás los diferentes métodos que puedes utilizar para comparar dos cadenas.
Método 1: método de cadena igual ()
Se registra en la Java Cordón método equals () compara dos objetos de cadena para valores de cadena iguales.
Sintaxis:
public boolean equals(Object anObject)
Parámetros del método igual ():
anObject: la cadena de argumento para comparar cadenas.
tipos de retorno del método igual ()
- Devuelve verdadero si la cadena literal proporcionada es la misma que la primera cadena.
- Devuelve falso si la primera cadena no es la misma que la cadena del argumento.
Ejemplo:
public class CompareTwoStrings { public static void main(String[] args) { String stringOne = "Guru99"; String stringTwo = "Guru99"; System.out.println("is Guru99 equal to Guru99: "+stringOne.equals(stringTwo)); String stringThree = "GURU99"; System.out.println("is Guru99 equal to GURU99: "+stringOne.equals(stringThree)); } }
Rendimiento esperado:
is Guru99 equal to Guru99: true is Guru99 equal to GURU99: false
Explicación:
- Obtuviste falso en el último resultado porque el objeto especificado tiene un caso diferente.
Nota: utilice el método string equals para comparar cadenas entre mayúsculas y minúsculas. Utilice el método "equalsIgnoreCase" para comparar objetos de cadena con diferentes valores de cadena.
Método 2: Método de objetos iguales ()
Se registra en la Java Objetos iguales() El método compara dos objetos de cadena para encontrar si tienen los mismos valores.
Sintaxis:
public static boolean equals(Object a, Object b)
parámetros del método igual ()
a: cadena de argumento para el primer objeto de cadena.
b: cadena de argumento para el segundo objeto de cadena.
tipos de retorno del método igual ()
- Devuelve verdadero si los literales de la cadena son iguales. Pasar un valor nulo en los dos argumentos también devolverá verdadero.
- Devuelve falso si los literales de la cadena no son iguales.
Ejemplo:
import java.util.Objects; public class CompareTwoStrings { public static void main(String[] args) { String stringOne = "Guru99"; String stringTwo = "Guru99"; System.out.println("is Guru99 equal to Guru99: " + Objects.equals(stringOne, stringTwo)); String stringThree = null; String stringFour = null; System.out.println("is Guru99 equal to Guru99: " + Objects.equals(stringThree, stringFour)); } }
Salida:
is Guru99 equal to Guru99: true is Guru99 equal to Guru99: true
Explicación:
En este ejemplo, puede ver que la salida es un valor booleano verdadero ya que las cadenas comparadas son iguales.
Método 3: método String compareTo()
Se registra en la Java Comparar cadena con() El método compara dos cadenas en orden alfabético. Generalmente se lo denomina orden lexicográfico.
Sintaxis:
public int compareTo(String str)
Parámetros del método compareTo()
str: la cadena que se va a comparar con la cadena actual.
El método compareTo() devuelve
- 0: devuelve cero si el objeto especificado es igual a la cadena actual.
- < 0: devuelve un número menor que cero si esta cadena es menor que el objeto especificado.
- > 0: devuelve un número mayor que cero si esta cadena excede la cadena proporcionada.
Ejemplo:
public class CompareTwoStrings { public static void main(String[] args) { String stringOne = "Guru99"; String stringTwo = "Guru99"; System.out.println("is Guru99 equal to Guru99: " + stringOne.compareTo(stringTwo)); String stringThree = "GURU99"; // u = 117, U = 85, result = 117-85 = 32 System.out.println("is Guru99 equal to GURU99: " + stringOne.compareTo(stringThree)); } }
Rendimiento esperado:
is Guru99 equal to Guru99: 0 is Guru99 equal to GURU99: 32
Explicación:
El primer resultado devuelve un valor de cero ya que la primera y la segunda cadena son iguales.
El segundo resultado devuelve un valor de treinta y dos ya que los caracteres son diferentes.
Nota: Para ignorar los casos, puede utilizar el método "compareToIgnoreCase".
Método 4: método StringUtils es igual ()
Se registra en la Java StringUtils es igual() El método compara la igualdad de dos secuencias de caracteres.
Asegúrese de haber agregado la biblioteca “org.apache.commons.lang3” en su programa. Esto le permitirá comparar cadenas utilizando los métodos StringUtil.
Para proyectos Maven, use esto guía para agregar la biblioteca al proyecto.
Sin embargo, si desea agregar la biblioteca sin herramientas de compilación, use esto guía.
Sintaxis:
public static boolean equals(CharSequnce cs1, CharSequence cs2)
Parámetros del método StringUtils es igual ()
- cs1: una secuencia de caracteres para el primer argumento.
- cs2: una secuencia de caracteres para el segundo argumento.
El método StringUtils es igual () devuelve
- Devuelve verdadero si la comparación de cadenas es igual. Se aplica si pasa un valor nulo en los dos argumentos.
- Devuelve falso si la comparación de cadenas no es igual.
Ejemplo:
import org.apache.commons.lang3.StringUtils; public class CompareTwoStrings { public static void main(String[] args) { String stringOne = "Guru99"; String stringTwo = "Guru99"; System.out.println("is Guru99 equal to Guru99: " + StringUtils.equals(stringOne, stringTwo)); String stringThree = "GURU99"; System.out.println("is Guru99 equal to GURU99: " + StringUtils.equals(stringOne, stringThree)); } }
Salida:
is Guru99 equal to Guru99: true is Guru99 equal to GURU99: false
Explicación:
Dado que el contenido de la primera y segunda cadena es igual, el resultado devuelve verdadero.
Puede utilizar el método "equalsIgnoreCase" para ignorar el caso.
Método 5: método StringUtils es igual aAny()
Se registra en la Java StringUtils es igual a Cualquier() El método comprueba si existe una cadena en los argumentos.
Sintaxis:
public static boolean equalsAny(CharSequence string, Charsequence… searchStrings)
StringUtils es igual a los parámetros del método Any()
- cadena: el valor de cadena para el primer argumento. El argumento también puede tener un valor nulo.
- searchStrings: un conjunto de argumentos de cadena para que el método encuentre si la primera cadena de argumento está presente.
El método StringUtils es igual a Any() devuelve
- Devuelve verdadero si la cadena a buscar existe en el número variable de cadenas de búsqueda. Esto se aplica si ambos argumentos son nulos.
- Devuelve falso si la cadena a buscar no coincide con ninguna cadena en el número variable de cadenas de búsqueda.
Ejemplo:
import org.apache.commons.lang3.StringUtils; public class CompareTwoStrings { public static void main(String[] args) { String stringOne = "Guru99"; String[] stringTwo = new String[] { "Guru99", "JavaGuru99" }; System.out.println("is Guru99 available: " + StringUtils.equalsAny(stringOne, stringTwo)); String[] stringThree = new String[] { "GURU99", "JavaGuru99" }; System.out.println("is GURU99 available: " + StringUtils.equalsAny(stringOne, stringThree)); } }
Salida:
is Guru99 available: true is GURU99 available: false
Explicación:
Dado que los contenidos de la primera cadena y la segunda cadena son iguales, el resultado devuelve verdadero. Puede utilizar el método "equalsAnyIgnoreCase" para ignorar el caso.
Método 6: usar el operador ==
El operador == en cadenas verifica si las referencias de objetos tienen la misma dirección.
Ejemplo:
public class CompareTwoStrings { public static void main(String[] args) { String stringOne = "Guru99"; String stringTwo = "Guru99"; System.out.println("is Guru99 == to Guru99: " + (stringOne == stringTwo)); String stringThree = "GURU99"; System.out.println("is Guru99 == to GURU99: " + (stringOne == stringThree)); } }
Rendimiento esperado:
is Guru99 == to Guru99: true is Guru99 == to GURU99: false
Explicación:
- El primer resultado devuelve un valor booleano verdadero. Las cadenas con el mismo contenido se agregan al mismo grupo de cadenas, por lo que la cadena comparte una dirección.
- El segundo resultado devuelve un valor booleano falso. Los objetos tienen contenidos diferentes, lo que da como resultado otros grupos de cadenas. Esto significa que las cadenas tienen referencias de objetos independientes; por tanto, el resultado es falso.
Método 7: crear un método personalizado para comparar dos cadenas en Java
Cree un método que compare dos cadenas utilizando el orden lexicográfico.
Sintaxis:
public static int compareTwoStrings(String str1, String str2)
Parámetros del método personalizado
- str1: la cadena a comparar.
- str2: la cadena con la que comparar.
Devoluciones de métodos personalizados
- 0: devuelve cero si la primera cadena es igual a la segunda cadena.
- < 0: devuelve un número menor que cero si la primera cadena es menor que la segunda.
- > 0: devuelve un número mayor que cero si la primera cadena es mayor que la segunda.
Ejemplo:
public class CompareTwoStrings { public static int compareTwoStrings(String stringOne, String stringTwo) { int lengthOfStringOne = stringOne.length(); int lengthOfStringTwo = stringTwo.length(); int minStringLength = Math.min(lengthOfStringOne, lengthOfStringTwo); for (int i = 0; i < minStringLength; i++) { char stringOneCharValue = stringOne.charAt(i); char stringTwoCharValue = stringTwo.charAt(i); if (stringOneCharValue != stringTwoCharValue) { return stringOneCharValue - stringTwoCharValue; } } if (lengthOfStringOne != lengthOfStringTwo) { return lengthOfStringOne - lengthOfStringTwo; } else { return 0; } } public static void main(String[] args) { String stringOne = "Guru99"; String stringTwo = "Guru99"; System.out.println("is Guru99 equal to Guru99: " + compareTwoStrings(stringOne, stringTwo)); } }
Rendimiento esperado:
is Guru99 equal to Guru99: 0
Explicación:
El resultado arrojó un valor de cero, lo que significa que la función personalizada funciona como se esperaba.
Resumen:
Se registra en la Java El método de comparación de dos cadenas a utilizar depende de los siguientes factores.
- Deseo de tener control sobre su método. En este caso, cree un método personalizado.
- No puedes usar código heredado. con Java 6 y menores.
- El método que tiene un rendimiento óptimo.
- El tipo de datos con los que está trabajando. Por ejemplo, hacer coincidir una cadena de un conjunto de argumentos variables.
- Las características proporcionadas por la biblioteca subcontratada. Por ejemplo, la biblioteca StringUtils proporciona diversos métodos para comparar cadenas.