Diferencia entre equals y hashCode en Java

Tabla de contenido:

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

Video: Diferencia entre equals y hashCode en Java

Video: Diferencia entre equals y hashCode en Java
Video: Java. Методы equals и hashCode. 2024, Mes de julio
Anonim

Diferencia clave: es igual a 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. El 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 único 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.

¿Qué es igual en Java?

El método de igualdad se usa 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 a objetos son iguales solo si apuntan al mismo objeto. Es posible anular el método de igualdad.

Diferencia entre iguales y hashCode en Java
Diferencia entre iguales 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 sentencia, 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 sentencia, System.out.println(s1==s3);

No existe un método de igualdad en la clase Student. Por lo tanto, se llama a los iguales en la clase Objeto. Verdadero se muestra solo si la referencia del objeto apunta al mismo objeto.

Diferencia entre equals y hashCode en Java_Figura 02
Diferencia entre equals y hashCode en Java_Figura 02

Figura 02: programa Java con iguales anulados

De acuerdo con el programa anterior, se anula el método de igualdad. Se pasa un objeto al método y se convierte a Student. Luego, se verifican los valores de identificación. Si los valores de identificación son similares, devolverá verdadero. Si no, devolverá falso. Los identificadores de s1 y s2 son similares. Por lo tanto, se imprimirá verdadero. Los identificadores de s1 y s3 también son similares, por lo que se imprimirá verdadero.

¿Qué es el código hash en Java?

El hashCode se utiliza para decidir en qué grupo debe clasificarse un objeto. Un grupo de objetos puede compartir el mismo hashCode. Una función hash correcta puede distribuir objetos de manera uniforme en diferentes grupos.

Un código hash 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_Figura 03
Diferencia entre equals y hashCode en Java_Figura 03

Figura 03: Clase de estudiante con iguales 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á false.

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 identificación de los dos objetos. Aunque se refieren a dos objetos, la respuesta es verdadera porque los valores de id de s1 y s2 son iguales. Como s1.equals(s2) es verdadero, el código hash de s1 y s2 debe ser igual. Imprimir el código hash 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?

igual a código hash en Java

equals es un método en Java que actúa de manera similar al operador==, que es 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 único valor hash.
Uso
El método equals se usa para comparar dos objetos. El método se utiliza para decidir en qué grupo debe colocarse un objeto.

Resumen: igual a código hash 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: