Diferencia Entre Equals Y HashCode En Java

Tabla de contenido:

Diferencia Entre Equals Y HashCode En Java
Diferencia Entre Equals Y HashCode En Java

Vídeo: Diferencia Entre Equals Y HashCode En Java

Vídeo: Diferencia Entre Equals Y HashCode En Java
Vídeo: Java. Методы equals и hashCode. 2024, Noviembre
Anonim

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.

Diferencia entre equals y hashCode en Java
Diferencia entre equals y hashCode en Java

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.

Diferencia entre equals y hashCode en Java Figure 02
Diferencia entre equals y hashCode en Java Figure 02

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.

Diferencia entre equals y hashCode en Java Figure 03
Diferencia entre equals y hashCode en Java Figure 03

Figura 03: Clase de estudiante con equals y hashCode

Diferencia clave entre equals y hashCode en Java
Diferencia clave entre equals y hashCode en Java

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.

Recomendado: