Générer un HASHCode Java correct

Table des matières

Java HashCode est l’une des méthodes qui se font la plupart des brosses. Génère des programmeurs.

public boolean hashCode();

La méthode est utilisée en combinaison avec la méthode des égaux pour comparer au niveau de l’entreprise lorsque deux objets d’une classe sont identiques. La mise en œuvre égale est toujours beaucoup plus facile à comprendre.

Java HashCode

Cette méthode existe pour améliorer les performances Java lors de la comparaison de deux objets. Étant donné que deux objets ont différents hashcodes ne peuvent plus être identiques et il s’agit de faire une comparaison simple entre les nombres entiers. Les problèmes surviennent sur la manière de générer les Hashcodes, car le cadre de collecte l’utilise pour concevoir les structures internes de leurs types de données abstraites. Dans l’exemple suivant, la classe de la personne avec la méthode de remplacement de l’équivalence (remplacement) est montrée de sorte que deux objets sont égaux si leur nom et leur nom de famille coïncident. La méthode est plus ou moins compréhensible.

package com.arquitecturajava;public class Persona {private String nombre;private String apellidos;public String getNombre() {return nombre;}public void setNombre(String nombre) {this.nombre = nombre;}public String getApellidos() {return apellidos;}public void setApellidos(String apellidos) {this.apellidos = apellidos;}@Overridepublic boolean equals(Object obj) {if (this == obj)return true;if (obj == null)return false;if (getClass() != obj.getClass())return false;Persona other = (Persona) obj;if (apellidos == null) {if (other.apellidos != null)return false;} else if (!apellidos.equals(other.apellidos))return false;if (nombre == null) {if (other.nombre != null)return false;} else if (!nombre.equals(other.nombre))return false;return true;}}

Eclipse Java Hashcode

La méthode ci-dessus a été générée avec les refacteurs Eclipse. De la même manière, le casquette peut être généré.

public int hashCode() {final int prime = 31;int result = 1;result = prime * result+ ((apellidos == null) ? 0 : apellidos.hashCode());result = prime * result + ((nombre == null) ? 0 : nombre.hashCode());return result;}

Cette méthode n’est plus si simple à comprendre. En effet, les hashcodes doivent avoir une certaine variabilité. C’est-à-dire que si tous les objets génèrent le même hashcode (), cela ne vaudra pas la peine d’améliorer la performance dans les comparaisons car elles ne génèrent que de la même manière et que la méthode des égaux sera toujours utilisée lors de leur exécution.

JavaHashCode

de l’autre côté si tous les objets génèrent des hachons différents, il sera impossible de les regrouper dans les différents types de collections de manière optimale.

javahashcodecorecto

java hashcode correct

Par conséquent, généralement Eclipse est responsable de la conception de votre propre méthode de hashcode à travers le Utilisation de nombres premiers. Cependant, il existe une autre option beaucoup plus élégante et simple pour les générer. Java API a une classe d’objets dans le package utilitaires qui génère des hashcodes.

@Override public int hashCode() { // TODO Auto-generated method stub return Objects.hash(nombre,apellidos); }

de cette façon, nous oublierons la peine que cette méthode génère dans les programmeurs.

Autres articles connexes: Comprendre des égaux et HashCode, Java == VS est égal à

Laisser un commentaire

Votre adresse e-mail ne sera pas publiée. Les champs obligatoires sont indiqués avec *