O igual é semelhante ao operador ==, que é testar a identidade do objeto em vez da igualdade do objeto. O hashCode é um método pelo qual uma classe divide implícita ou explicitamente os dados armazenados em uma instância da classe em um único valor de hash, que é um número inteiro assinado de 32 bits. o diferença chave entre iguais e hashCode em Java é aquele o igual é usado para comparar dois objetos enquanto o hashCode é usado no hash para decidir em qual grupo um objeto deve ser categorizado..
1. Visão geral e principais diferenças
2. O que é igual em Java
3. O que é hashCode em Java
4. Comparação lado a lado - igual a hashCode em Java em forma de tabela
5. Resumo
O método equals é usado para comparar dois objetos. O método equals padrão é definido na classe de objeto. Essa implementação é semelhante ao operador ==. As duas referências de objeto são iguais apenas se estiverem apontando para o mesmo objeto. É possível substituir o método equals.
Figura 01: Programa Java com iguais
A declaração System.out.println (s1.equals (s2)) fornecerá a resposta false, porque s1 e s2 estão se referindo a dois objetos diferentes. Foi semelhante à declaração System.out.println (s1 == s2);
A declaração System.out.println (s1.equals (s3)) fornecerá a resposta true porque s1 e s3 estão se referindo ao mesmo objeto. Foi semelhante à declaração System.out.println (s1 == s3);
Não existe método igual na classe Aluno. Portanto, os iguais na classe Object são chamados. True é exibido apenas se a referência do objeto estiver apontando para o mesmo objeto.
Figura 02: Programa Java com Substituídos iguais
De acordo com o programa acima, o método equals é substituído. Um objeto é passado para o método e é do tipo convertido para Student. Em seguida, os valores de identificação são verificados. Se os valores de id forem semelhantes, ele retornará true. Caso contrário, ele retornará falso. Os IDs de s1 e s2 são semelhantes. Então, ele será impresso como verdadeiro. Os IDs de s1 e s3 também são semelhantes, portanto, será impresso true.
O hashCode é usado no hash para decidir em qual grupo um objeto deve ser categorizado. Um grupo de objetos pode compartilhar o mesmo hashCode. Uma função correta de hash pode distribuir objetos de maneira uniforme em diferentes grupos.
Um hashCode correto pode ter propriedades da seguinte maneira. Suponha que haja dois objetos como obj1 e obj2. Se obj1.equals (obj2) for verdadeiro, então obj1.hashCode () será igual a obj2.hashCode (). Se obj1.equals (obj2) for falso, não é necessário que obj1.hashCode () não seja igual a obj2.hashCode (). Os dois objetos desiguais também podem ter o mesmo hashCode.
Figura 03: turma do aluno com iguais e hashCode
Figura 04: Programa principal
A classe Student contém os métodos equals e hashCode. O método equals na classe Student receberá um objeto. Se o objeto for nulo, ele retornará false. Se as classes dos objetos não forem as mesmas, ele retornará false. Os valores de identificação são verificados nos dois objetos. Se eles são semelhantes, ele retornará verdadeiro. Caso contrário, ele retornará falso.
No programa principal, os objetos s1 e s2 são criados. Ao chamar s1.equals (s2), será verdadeiro porque o método equals foi substituído e verifica os valores de id dos dois objetos. Mesmo se referindo a dois objetos, a resposta é verdadeira porque os valores de id de s1 e s2 são os mesmos. Como s1.equals (s2) é verdadeiro, o hashCode de s1 e s2 deve ser igual. Imprimir o hashCode de s1 e s2 fornece o mesmo valor. O método hashCode pode ser usado com coleções como o HashMap.
equals vs hashCode em Java | |
igual é um método em Java que age de maneira semelhante ao operador ==, que é testar a identidade do objeto em vez da igualdade do objeto. | hashCode é um método pelo qual uma classe divide implícita ou explicitamente os dados armazenados em uma instância da classe em um único valor de hash. |
Uso | |
O método igual é usado para comparar dois objetos. | O método é usado no hash para decidir em qual grupo um objeto deve ser colocado.. |
A diferença entre iguais e hashCode em Java é que igual é usado para comparar dois objetos, enquanto o hashCode é usado no hash para decidir em qual grupo um objeto deve ser categorizado..
1. “Java HashCode ().” Wikipedia, Wikimedia Foundation, 17 de fevereiro de 2018. Disponível aqui
2.Harold, Elliotte Rusty. "O método Equals ()". O método Equals (), 2 de novembro de 2001. Disponível aqui