Diferencia clave - equals vs hashCode en Java
El igual es similar al operador ==, que es para probar la identidad del objeto en lugar de la igualdad del objeto. HashCode es un método mediante el cual una clase descompone implícita o explícitamente los datos almacenados en una instancia de la clase en un solo valor hash, que es un entero de 32 bits con signo. La diferencia clave entre equals y hashCode en Java es que equals se usa para comparar dos objetos, mientras que hashCode se usa en hash para decidir en qué grupo se debe categorizar un objeto.
CONTENIDO
1. Descripción general y diferencia clave
2. Qué es igual en Java
3. Qué es hashCode en Java
4. Comparación lado a lado - equals vs hashCode en Java en forma tabular
5. Resumen
¿Qué es igual en Java?
El método de iguales se utiliza para comparar dos objetos. El método de igualdad predeterminado se define en la clase de objeto. Esa implementación es similar al operador ==. Las dos referencias de objeto son iguales solo si apuntan al mismo objeto. Es posible anular el método de igualdad.
Figura 01: Programa Java con iguales
La declaración System.out.println (s1.equals (s2)) dará la respuesta falsa porque s1 y s2 se refieren a dos objetos diferentes. Era similar a la declaración, System.out.println (s1 == s2);
La declaración System.out.println (s1.equals (s3)) dará la respuesta verdadera porque s1 y s3 se refieren al mismo objeto. Era similar a la declaración System.out.println (s1 == s3);
No existe un método de iguales en la clase de estudiantes. Por lo tanto, se llama a los iguales en la clase Object. Verdadero se muestra solo si la referencia del objeto apunta al mismo objeto.
Figura 02: Programa Java con igual anulado
Según el programa anterior, se anula el método de igualdad. Se pasa un objeto al método y se convierte en tipo a Student. Luego, se verifican los valores de id. Si los valores de id son similares, devolverá verdadero. Si no, devolverá falso. Los identificadores de s1 y s2 son similares. Entonces, se imprimirá verdadero. Los identificadores de s1 y s3 también son similares, por lo que se imprimirá verdadero.
¿Qué es hashCode en Java?
El hashCode se usa en hash para decidir en qué grupo debe categorizarse un objeto. Un grupo de objetos puede compartir el mismo hashCode. Una función de hash correcta puede distribuir objetos de manera uniforme en diferentes grupos.
Un hashCode correcto puede tener las siguientes propiedades. Suponga que hay dos objetos como obj1 y obj2. Si obj1.equals (obj2) es verdadero, entonces obj1.hashCode () es igual a obj2.hashCode (). Si obj1.equals (obj2) es falso, no es necesario que obj1.hashCode () no sea igual a obj2.hashCode (). Los dos objetos desiguales también pueden tener el mismo código hash.
Figura 03: Clase de estudiante con equals y hashCode
Figura 04: Programa principal
La clase Student contiene los métodos equals y hashCode. El método equals en la clase Student recibirá un objeto. Si el objeto es nulo, devolverá falso. Si las clases de los objetos no son las mismas, devolverá falso. Los valores de id se comprueban en ambos objetos. Si son similares, devolverá verdadero. De lo contrario, devolverá falso.
En el programa principal, se crean los objetos s1 y s2. Al llamar a s1.equals (s2) dará verdadero porque el método equals se anula y verifica los valores de id de los dos objetos. Aunque se refieren a dos objetos, la respuesta es verdadera porque los valores de id de s1 y s2 son los mismos. Como s1.equals (s2) es verdadero, el hashCode de s1 y s2 debe ser igual. La impresión del hashCode de s1 y s2 da el mismo valor. El método hashCode se puede utilizar con colecciones como HashMap.
¿Cuál es la diferencia entre equals y hashCode en Java?
Diferencia del medio del artículo antes de la mesa
es igual a vs hashCode en Java |
|
equals es un método en Java que actúa de manera similar al operador ==, que es para probar la identidad del objeto en lugar de la igualdad del objeto. | hashCode es un método mediante el cual una clase desglosa implícita o explícitamente los datos almacenados en una instancia de la clase en un solo valor hash. |
Uso | |
El método es igual a se utiliza para comparar dos objetos. | El método se utiliza en hash para decidir en qué grupo se debe colocar un objeto. |
Resumen - equals vs hashCode en Java
La diferencia entre equals y hashCode en Java es que equals se usa para comparar dos objetos, mientras que hashCode se usa en hash para decidir en qué grupo se debe categorizar un objeto.